This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Do signals work?



I have the latest coolview  cygwin and have been trying to use the signals. I can install the handler but cannot get the handler to be entered. I have tried the following program:

#include <fcntl.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <setjmp.h>

long count=0;
int handled;
jmp_buf env;

void sigill_handler(int sig)
{
	printf("handler\n");
	while (count >0)
	{
		count--;
		return;
	}
	handled=(0==0);
	longjmp(env,1);	
};

int main(int argc, char* argv[])
{   
	long* address;
	long sum;
	int error;
	struct sigaction act;

    	act.sa_handler=&sigill_handler;
    	act.sa_flags=0;

    	error=sigaction(SIGSEGV,&act,NULL);	// install handler
	if (error != 0) 
	{
		printf("failed to install handler\n");
		return 1;
	}

	handled=(0==1);
	count=0;

	address=(long*)(((long)&count) & 0xffff0000);
	address+=1024*1024;

	if (setjmp(env)==0)
	{
		while (!handled)
		{
			address=address+4096;
			sum+=*address;
		}
	}
	return 0;
}


The program runs fine or unix (solaris) - it simply print handler as required. On gnuwin95 I get

(c:\a.exe 28547) In cygwin_except_handler exc C0000005 at 401148 sp 240F16C

I have tried debugging it using gdb which reports that the program has had a SIGSEGV but does not appear to enter my handler. Continue simply repeats the report.


Has anyone any ideas why I cannot catch these signals - cleary gdb is doing.



Many thanks 

Kevin


-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]