Hi Vimal,
        Please note that YOU ARE HANDLING THE SIGSEGV signal ON YOUR OWN so
it's your responsibility to handle the exit also, otherwise it will keep on
printing <Seg. Fault>. The action ,kernel takes when segmentation fault
occurs, is :
--> dump the core image 
--> exit the program
(off course there is one case in which we get a message
Segmentation fault occurred
without any core dump)
Since you are taking the responsibility of kernel on your shoulder so please
take care of this.
Put exit(0); in the signal handler function and you'll get <Seg. Fault> only
once.
HTH
Ajit 
----------------------------------------------------------------------------
-------------------------
Best way to learn Linux is to put comments in the source code
___________________________________________________

> -----Original Message-----
> From: Vimal Mathew [SMTP:[EMAIL PROTECTED]]
> Sent: Monday, January 17, 2000 2:56 PM
> To:   [EMAIL PROTECTED]
> Subject:      [LI] Catching SIGSEGV
> 
> Hi,
>       A program I wrote used a signal handler for SIGSEGV. I originally
> compiled it without any extra flags. When any instruction in the program
> seg. faulted, it would get a large no. of Segmentation fault signals (I
> checked with strace and ltrace), and the program would exit. The same
> program, if compiled with optimization flags (-O2) would work as expected.
> I tried compiling with both gcc and egcs under RH5.2 and egcs in RH6.1.
> The program fragment is given below
> 
> jmp_buf env;
> 
> void seg_catch()
> {
>       printf("<Seg. fault>\n");
>       longjmp(env, 1);
> }
> main()
> {
>       ......  /* Setup handlers etc. */
>       ......
>       if (setjmp(env) == 0) {
>               ....
>               <seg. faulting statements>
>       } else {
>               ....
>       }
> }
> 
> --------------------------------------------------------------------
> The Linux India Mailing List Archives are now available.  Please search
> the archive at http://lists.linux-india.org/ before posting your question
> to avoid repetition and save bandwidth.
--------------------------------------------------------------------
The Linux India Mailing List Archives are now available.  Please search
the archive at http://lists.linux-india.org/ before posting your question
to avoid repetition and save bandwidth.

Reply via email to