Signal hang

Matthew Brown mbrown@mediadb.net
Tue Dec 21 14:51:00 GMT 1999


I am attempting to build libstdc++ 2.90.6 
with the following configuration:
 
- Windows NT4 sp3
- cygwin full b20.1
- Mumit's gcc 2.95.2 installed according to 
instructions
 
The symptom is that when mknumeric_limits 
runs, it hangs in a loop (CPU is chewed-up and nothing useful happens). When I 
dig into things, I find that gen-num-limits.exe is where the loop is happening, 
and, when I dig in farther, I find that the loop is in exception handling code. 
gen-num-limits is trying to generate divide-by-zero and overflow errors for 
various intrinsic types; this is where the problem is occurring.
If I run gen-num-limits interactively (so 
it spews to the terminal), I see that the behavior is not consistent; sometimes 
it chokes on divide-by-zero for one type and sometimes for 
another.
 
Here is a small program with which I can 
reproduce the problem simply (built with no special options):
 
------------------------------ cut here 
----------------------------
#include <signal.h> #include 
<setjmp.h> #include <stdio.h>
 
jmp_buf env;
 
void signal_handler(int sig) { 
   fprintf(stderr, "caught a signal\n");    
longjmp(env, sig); }
 
typedef char   
tested_type;
 
int main(int argc, char 
**argv) {    signal(SIGFPE, signal_handler);    if 
(setjmp(env) == 0)    {       
fprintf(stderr, "set the jump return location\n");
 
      
tested_type     zero = 
tested_type();       
tested_type     one = 
tested_type(1);       
tested_type     junk = one / zero;    
}
 
   fprintf(stderr, 
"Done!\n");    return 0; }

------------------------------ cut here 
----------------------------
 
This is essentially the flow of processing that occurrs in gen-num-limits. 
With tested_type set to an integral type (including bool), sometimes it works, 
sometimes it loops. Sometimes it just exits.
 
Does anyone know of an issue here?
 
Vadim Egorov posted a message about this a few months ago, but there are no 
replies on this list.
 
Thanks for any help.
 
-- Matthew Brown
BEGIN:VCARD
VERSION:2.1
N:Brown;Matthew
FN:Matthew Brown
ORG:Concord Software, Inc.
TITLE:Senior Programmer
TEL;WORK;VOICE:(603) 880-8151
TEL;WORK;FAX:(603) 886-1780
ADR;WORK:;;4 John Tyler Street;Merrimack;New Hampshire;03054;USA
LABEL;WORK;ENCODING=QUOTED-PRINTABLE:4 John Tyler Street=0D=0AMerrimack, New Hampshire 03054=0D=0AUSA
X-WAB-GENDER:2
URL:
URL: http://www.concordsw.com
EMAIL;PREF;INTERNET:mbrown@mediadb.net
REV:19991221T225006Z
END:VCARD



More information about the Cygwin mailing list