Thanks to @umläute's comment I used gdb
for enhanced debugging.
Here's how I backtraced ./target/bin/identify -list delegate
:
$ gdb ./target/bin/identify
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /usr/src/imagemagick-static/target/bin/identify...done.
(gdb) run -list delegate
This generated much more useful output than strace did:
Program received signal SIGSEGV, Segmentation fault.
0x000000000072eaa5 in gvFreeContext ()
Googling for gvFreeContext
allowed me to narrow down further debugging on Graphviz.
Michael Mrozek suggested to then type
(gdb) bt
That gives the full backtrace:
#0 0x000000000094ce21 in gvFreeContext ()
#1 0x000000000049fe4f in UnregisterDOTImage ()
#2 0x0000000000452e5c in UnregisterStaticModules ()
#3 0x0000000000423013 in MagickCoreTerminus ()
#4 0x000000000040cc38 in IdentifyMain ()
#5 0x000000000040cc64 in main ()
I haven't solved my segfault just yet, but gdb
backtraces seem the way to debug them when nor stderr nor dmesg
nor kern.log
contain good clues.
strace
would be abacktrace
gvFreeContext
, so possibly a graphviz issue..?bt
command after it segfaults to get the backtrace