in reply to Re: Understanding the segmentation fault output generated using gdb
in thread Understanding the segmentation fault output generated using gdb

Could you tell me why the address is invalid. Regarding third party modules i had similar failure earlier but at that time it was failing in Sybase module during destruction of object. This is the previous backtrace.
gdb) backtrace #0 0xfeae7253 in syb_st_destroy () from /usr/local/lib/perl5/site_per +l/5.8.6/i86pc-solaris/auto/DBD/Sybase/Sybase.so #1 0x08183c80 in ?? () #2 0x08365b8c in ?? () #3 0x1d7d7640 in ?? () #4 0xfeaff840 in ?? () from /usr/local/lib/perl5/site_perl/5.8.6/i86p +c-solaris/auto/DBD/Sybase/Sybase.so #5 0xfead99ab in XS_DBD__Sybase__st_DESTROY () from /usr/local/lib/pe +rl5/site_perl/5.8.6/i86pc-solaris/auto/DBD/Sybase/Sybase.so #6 0x08183c8c in ?? () #7 0x00000004 in ?? () #8 0xfec40b5c in ?? () from /usr/local/lib/perl5/site_perl/5.8.6/i86p +c-solaris/auto/DBI/DBI.so #9 0x08183c80 in ?? () #10 0x08183cc0 in ?? () #11 0x00000000 in ?? () (gdb)
Are there any more information i can extract from the core enabling more debugging.
  • Comment on Re^2: Understanding the segmentation fault output generated using gdb
  • Download Code

Replies are listed 'Best First'.
Re^3: Understanding the segmentation fault output generated using gdb
by cdarke (Prior) on Aug 21, 2009 at 16:35 UTC
    Could you tell me why the address is invalid.

    Aye, there's the rub. Usually a duff pointer, all you have to do is find which one (that's a joke, by the way). Thing is that all you are seeing is the result of a memory location being overwritten, not the cause. A needle in a haystack is simple to these kinds of issues. Just because it was failing in the Sybase module does not mean that that module caused the fault - just that it happened to be the area of memory stomped on.

    You will not stand much chance using gdb unless you recompile perl and any XS modules with debug switched on (unless you are really good at assembler), and that is not for the faint hearted. Realistically you must try to reproduce the fault and then remove code until it stops happening. Personally I have known bugs like this to have a life of five or six years and never get resolved. Part of the joys of C.

    By the way, are you using a reasonably up-to-date version of Perl and associated modules? It might be worth considering an upgrade if you are not.