Christoph Duelli wrote:
I have a quite big Spirit (1.38) grammar inside a lib. (Running OpenSuSE 11.1 Linux, gcc 4.3.2, gdb 6.8.50; both 32 bit and 64 bit.)
When trying to debug a programm linked against this lib, gdb crashes - when trying to read the lib's symbol table.
(gdb) at 19281 Attaching to process 19281 Reading symbols from ....i_mepl_debug...done. Reading symbols from ....libMEPL_debug.so.6... Segmentation fault (core dumped)
(Note that this is not my program crashing but gdb. And no, the program is not buggy, has not corrupted the stack or anything like that ;-)
Debugging does work on older openSuSE (or SLES) releases, e.g. on openSuSE 10.3., SLES 10, SLES9. I have build and tried the latest gdb release, but it shows the same behaviour as the one part of the release.
A stack trace of the gdb core showed that the crash seems to have occured in cplus_demangle_v3.
I have searched google and found some postings that indicate the issue might stem from too long symbols being generated for Spirit (or Xpressive) constructs. (A quick glance on nm output shows, there are some symbols of some 1000 characters in size. Might be even longer ones.)
Has anyone else stumbled upon this and maybe found out what the culprit is? A bug in gcc? gdb? name (de)mangling?
If gdb crashes, this is a bug in GDB, so please report it to their bugzilla. - Volodya