Date: Tue, 15 Sep 1998 12:22:11 +0200 (CEST) From: Konrad Heuer <kheuer@gwdu60.gwdg.de> To: freebsd-hackers@FreeBSD.ORG Subject: Catching SIGSEGV Message-ID: <Pine.BSF.3.96.980915114921.5972A-100000@gwdu60.gwdg.de>
next in thread | raw e-mail | index | archive | help
May I ask my question here although it's not correlated to FreeBSD development? I write a program which shall run under FreeBSD and want to catch SIGSEGV to count these events. So the program is like this: int nsegv = 0; int *ptr; int zero = 0; void sighdl ( int sig ) { ptr = &zero; nsegv++; } int dowork ( ) { int buf; signal(SIGSEGV, sighdl); ptr = InvalidAddress; buf = *ptr; } Ok, the signal handler gets called, ptr will be reset to a legal address, but nevertheless after returning from the signal handler it will be called again immediately resulting in an infinite loop. Where's my mistake? What can I do to prevent that loop? Thanks for any reply. Regards Konrad Heuer // Gesellschaft fuer wissenschaftliche Datenverarbeitung mbH // Goettingen (GWDG), Am Fassberg, D-37077 Goettingen, Germany // // kheuer@gwdu60.gwdg.de To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.980915114921.5972A-100000>