This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: sigfe/pthread bug on Win95 [Was: Re: Also 20040306 snapshot crashes in Win95]
- From: Christopher Faylor <cgf-no-personal-reply-please at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Sun, 21 Mar 2004 12:00:11 -0500
- Subject: Re: sigfe/pthread bug on Win95 [Was: Re: Also 20040306 snapshot crashes in Win95]
- References: <3.0.5.32.20040321093639.007f6730@verizon.net>
- Reply-to: cygwin at cygwin dot com
On Sun, Mar 21, 2004 at 09:36:39AM -0500, Pierre A. Humblet wrote:
>There has been a report of a cygwin crash on Win95
>
>http://www.cygwin.com/ml/cygwin/2004-03/msg00507.html
>
>CYGWIN_95-4.0 erg 1.5.10(0.112/4/2) 2004-03-19 20:04 i586 unknown unknown
>Cygwin
>
>Gnuchess is a fairly simple program, so I looked into it.
>It uses pthreads and creates a thread that reads the input.
>This threads crashes almost immediately.
>
>input.c: pthread_create(&input_thread, NULL, input_func, NULL);
>
>void *input_func(void *arg __attribute__((unused)) )
>{
> char prompt[MAXSTR] = "";
>
> while (!(flags & QUIT)) {
> if (!(flags & XBOARD)) {
> sprintf(prompt,"%s (%d) : ",
> RealSide ? "Black" : "White",
> (RealGameCnt+1)/2 + 1 );
> }
>
>
>gdb session after break at input_func
>*************************************
>123 while (!(flags & QUIT)) {
>(gdb) n
>124 if (!(flags & XBOARD)) {
>(gdb) n
>125 sprintf(prompt,"%s (%d) : ",
>(gdb) stepi
>0x00429950 in sprintf ()
>(gdb) stepi
>0x61091eda in _sigfe_sprintf ()
> at ../../../../src/winsup/cygwin/cygserver.h:82
>82 ssize_t error_code () const { return _header.error_code; };
>Current language: auto; currently c++
>(gdb) stepi
>0x61091edf in _sigfe_sprintf ()
> at ../../../../src/winsup/cygwin/cygserver.h:82
>82 ssize_t error_code () const { return _header.error_code; };
>(gdb) stepi
>0x61090890 in _sigfe () at ../../../../src/winsup/cygwin/cygserver.h:82
>82 ssize_t error_code () const { return _header.error_code; };
>
>(gdb) stepi
>0x61090891 82 ssize_t error_code () const { return
>_header.error_code; };
><snip>
>
>0x610908ca 82 ssize_t error_code () const { return
>_header.error_code; };
>(gdb) stepi
>0x610908ce 82 ssize_t error_code () const { return
>_header.error_code; };
>(gdb) stepi
>
>Program received signal SIGSEGV, Segmentation fault.
>0x610908ce in _sigfe () at ../../../../src/winsup/cygwin/cygserver.h:82
>82 ssize_t error_code () const { return _header.error_code; };
>
>(gdb) disas 0x610908ca 0x610908de
>Dump of assembler code from 0x610908ca to 0x610908de:
>0x610908ca <_sigfe+58>: xchg %edx,0xc(%esp,1)
>0x610908ce <_sigfe+62>: mov %edx,(%eax)
>0x610908d0 <_sigfe+64>: incl 0xfffffbf4(%ebx)
>0x610908d6 <_sigfe+70>: decl 0xfffffbfc(%ebx)
>0x610908dc <_sigfe+76>: pop %edx
>0x610908dd <_sigfe+77>: pop %ebx
>End of assembler dump.
>(gdb) p $eax
>$4 = 0
>
>This is not something I know how to fix.
So, I guess it's broken for good, then.
Oh well. I will put a notice on the main cygwin web page that it no
longer works on Windows 95.
cgf
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/