Return to BSD News archive
Newsgroups: comp.unix.bsd Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!haven.umd.edu!news.umbc.edu!europa.eng.gtefsd.com!howland.reston.ans.net!pipex!sunic!psinntp!psinntp!relay1!rsvl_ns!unirsvl!sybesma From: sybesma@unirsvl.rsvl.unisys.com (Eric Sybesma) Subject: Memory fault in a unix signal handler (SIGIO) Summary: Memory fault in Unix signal handler (SIGIO) Message-ID: <CHF2E7.FHB@unirsvl.rsvl.unisys.com> Date: Thu, 2 Dec 1993 16:42:07 GMT Organization: Unisys Keywords: SIGIO signal memory fault Lines: 40 I have a problem with a signal handler. This is a c and Unix question. (let me know what group would be better to post this in). I have signal set up as follows for SIGIO: int sigsocket = SIGIO; if (signal(sigsocket,handle_socket_signal) == (void (*)()) -1) { status = 1; } /* signal failed */ and the signal handler is void handle_socket_signal(signum) int signum; { /* handle_socket_signal */ register int status = 0; if (signal(signum,handle_socket_signal) == (void(*)()) -1) { log_system_error(); } /* signal failed */ have_socket_traffic = 1; printf("return from signal handler \n"); /* this statement IS executed */ return; } /* handle_socket_signal */ /* When the signal handler returns, the program gets a segmentation violation and the core file lists the bomb out at this line 0x804fa74 (sigvechandler+164:) andl $0xfffffffe,0x20(%edi) (Intel X86) Evidently, I am stomping on something, but why would a signal handler do this.. NOTE: IF I use another signal (say SIGURG), I don't have the same problem. Eric Sybesma