bugle-unwindstack — recover a stack trace after a segmentation fault
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
The method used to recover the stack trace violates POSIX rules
(and common sense) about the use of
It works for me under Linux with NVIDIA drivers, but your mileage