Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Sun, 21 Mar 2004 12:00:11 -0500 From: Christopher Faylor To: cygwin AT cygwin DOT com Subject: Re: sigfe/pthread bug on Win95 [Was: Re: Also 20040306 snapshot crashes in Win95] Message-ID: <20040321170011.GD27006@redhat.com> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: <3 DOT 0 DOT 5 DOT 32 DOT 20040321093639 DOT 007f6730 AT verizon DOT net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3.0.5.32.20040321093639.007f6730@verizon.net> User-Agent: Mutt/1.4.1i 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; }; > > >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/