[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

Re: Segmentation faults and Core Dump



Shridhar Daithankar forced the electrons to say:
>  The only answer to core dump is pointer(barring divide by zero but I think 
> that's trapped)

Actually, divide by zero will also generate a core dump, I think - but it
won't be SIGSEGV - it will be SIGFPE that generates the dump.

man 7 signal will give you a list of all signals that causes a program to dump
core.

>  Either you try to use a function pointer that's invalid or access data by 
> reference of a pointer, that's invalid.

It is not due to referencing a pointer - but dereferencing it ;-)

char *p = malloc (1); p += 1000000; will not dump core - but if you try
to access data at p, with things like *p = 0x42, it most likely will.

To OP: Compile your program with debugging support turned on (gcc -g), run it
to generate the core dump, and then invoke gdb <exe file> core. From within
gdb, give the bt command to get a full backtrace to the point of core dump.
Run your program under gdb's control, examine all variables at the point of
the dump - and usually you will find the cause of the dump (most likely buffer
overflows).

Binand