Mail Archives: djgpp/1998/03/05/09:08:56
Eli Zaretskii wrote:
> I can confirm that Bash works flawlessly for me on Windows 95.
So lucky!!! :)
> Somebody reported a very similar problem a few weeks ago, but he didn't
> follow up after I asked to check several things. I attach my two
> messages in that thread below; please see if your case is similar enough,
> and if so, please try to run the tests I was suggesting then and report
> the results.
Yes, definitely, my case is very similar. I've got exactly the same
problems and behaviours. Here is the result of a few tests you
suggested.
> Did you set LFN=y in the environment? If not, try setting it and see if
> that helps.
I've tried to run bash setting LFN=y (launching it with -norc and
-noprofile options). But everything's the same!
> Please tell exactly what version of Windows is that. It is
> definitely something specific to your configuration or the variety of
> Windows 95 that you use (the other guy told me he had version 4.00.950B);
> my version is 4.00.950-r7.
I've seen Control Panel's "System General" tab and run the 'ver'
command: It seams that my version is 4.00.950. I've got no beta version
or release indication (as "-r7"). Is it simply because this is the first
release or should I look for this information somewhere else?
> Please post the traceback which is printed after CTRL-BREAK. The other
> guy posted a traceback which clearly showed a terrible mess (see below).
Here is a log of a 'classic' session (bash freezed after displaying the
second 'bash$' prompt and then I typed CTRL+BREAK):
C:\djgpp>bash
bash$ ls
bin gnu lib readme.1st
zip-picker.cgi
copying.dj include manifest share zoneinfo
djgpp.env info pipo.c tmp
faq lang pipo.exe tutorial
bash$ Exiting due to signal SIGSEGV
General Protection Fault at eip=000420e5
eax=000010ae ebx=00000024 ecx=00000002 edx=0003ffe8 esi=00000222
edi=00067414
ebp=00168040 esp=00000fec program=C:\DJGPP\BIN\BASH.EXE
cs: sel=00a7 base=82ad2000 limit=ffe99fff
ds: sel=0000
es: sel=00b7 base=82ad2000 limit=ffe99fff
fs: sel=00bf base=00000000 limit=ffffffff
gs: sel=00bf base=00000000 limit=ffffffff
ss: sel=0183 invalid
Call frame traceback EIPs:
0x000420e5
C:\djgpp>
End of log.
As you can see the traceback is very similar to Eric Kidd's one: DS is
trash and SS is invalid. What a mess!
> > (Eric Kidd wrote:) To freeze the terminal, I must launch
> > an external command--a blank command line or a shell built-in such as 'set'
> > won't cause the problem. These facts appear to indicate a problem with
> > starting the new process, or setting up its I/O.
>
> Does this happen only with DJGPP-compiled programs, or *any* external
> program will do that? How about XCOPY or some other program DOS which
> comes with Windows?
>
No. There is no problem if I run only DOS programs that comes with
windows, blank command line, or 'set' shell built-in. I've been able to
launch as many dos commands as I wanted (xcopy, edit, debug, label, mem,
chkdsk, ...) without any freezing.
> The DOS box is screwed up also? So maybe it's the Windows' fault?
> Please try booting into plain DOS (no Windows) and see if the same
> problem happens there as well.
I've tried but I've got no DPMI server! Should I get csdpmi*b.zip as
suggested in the error message, and install it?
> Please write a simple program which reads from stdin using `getc' ot
> `scanf', run it, and if it hangs also, press Ctrl-BREAK and hit
> [Enter]. Then post the traceback after running `symify' on it,
> together with the test program's source.
I've made two programs from the same source code. The first one, named
foo.exe has been compiled with gcc (version 2.7.2.1, from DJGPP
utilities). The second one, named bar.exe, has been compiled with
Borland C++ 3.1 (Don't laugth, I had no other C compiler...).
Here is the source code of these programs:
#include <stdio.h>
int main(int argc, char *argv[])
{
int c;
while ((c = getc(stdin)) != EOF)
putc(c, stdout);
return 0;
}
End of source code.
Then I've tried to run a few "echo hello | foo" and "echo hello | bar"
commands. And you know what? I can run as many "echo hello | bar"
commands as I want (compiled with Borland C++ 3.1). But as soon as I run
a "echo hello | bar" command, bash freezes. Here is the log of a session
of this kind (as usual bash freezed after the second bash$ prompt and
then I typed CTRL+BREAK) :
C:\djgpp>bash
bash$ echo hello | foo
hello
bash$ Exiting due to signal SIGSEGV
General Protection Fault at eip=000420e5
eax=000010ae ebx=0000002e ecx=00000002 edx=0003ffe8 esi=00000222
edi=00067414
ebp=00168040 esp=00000fec program=C:\DJGPP\BIN\BASH.EXE
cs: sel=00a7 base=82ad2000 limit=ffeacfff
ds: sel=0000
es: sel=00b7 base=82ad2000 limit=ffeacfff
fs: sel=00bf base=00000000 limit=ffffffff
gs: sel=00bf base=00000000 limit=ffffffff
ss: sel=0133 invalid
Call frame traceback EIPs:
0x000420e5
End of log.
Note that, of course, "echo hello | foo" works perfectly from the dos
shell.
I haven't run 'symify' on this traceback (as you asked me). Indeed, if
I've well understood the FAQS about symify (not so sure!), I would need
a
'bash.exe' program compiled with '-g' option to do so (as bash display a
prompt before freezing, we are not in foo.exe code. Moreover the call
frame traceback has only one entry which should be bash main entry point
(
That's what I suppose). I've dowloaded bash sources, but the problem is
that I
haven't suceeded yet in compiling it. Maybe I could download a 'ready to
test' version of bash compiled with "-g" option. Do you know where I
could find that?.
Thanks a lot for your help and excuse me for my poor english (You know,
the french have no talent for foreign languages).
Philippe.
- Raw text -