[About] [News] [Documentation] [Screenshots]


bugle-unwindstack — recover a stack trace after a segmentation fault


filterset unwindstack


Some OpenGL drivers (particularly proprietry drivers) are compiled without frame pointer information. The result is that if you pass a bad pointer to the driver, causing it to segfault, gdb(1) is unable to produce a stack trace showing that location of the fault. This filter-set uses some ugly hacks to try to correct this.

When using this filter-set and debugging your application in gdb(1), the segmentation fault will still leave you without a stack trace. However, if you continue running, you will get a second segmentation fault, at which point a stack trace is available.

Note that the call that causes the segmentation fault may not be the direct cause; for example, a bad pointer passed to glVertexPointer might only cause a segmentation fault in glDrawArrays. See also the bugle-checks(7) filter-set, which does some aggressive error-checking and can detect some of these conditions.


The method used to recover the stack trace violates POSIX rules (and common sense) about the use of setjmp. It works for me under Linux with NVIDIA drivers, but your mileage might vary.


bugle is written and maintained by Bruce Merry.

See also

Get BuGLe at SourceForge.net. Fast, secure and Free Open Source software downloads