segfaults when running graphical reports

Thomas Klausner tk at giga.or.at
Sun Apr 13 15:06:11 EDT 2014


On Sun, Apr 13, 2014 at 11:44:38AM -0700, John Ralls wrote:
> How it’s getting there is still to be determined, but the fact that it’s running the main loop in 3 threads is a major problem. That isn’t GnuCash’s doing: It’s single threaded.

About that, see below.

> But there should be GnuCash symbols there. Are you sure you’re running the version you built with -g -O0?

Sorry, I wasn't. Here's the -g -O0 version, started in the background,
when it's hanging (no gnucash symbols though):

(gdb) thread apply all bt

Thread 3 (LWP 2):
#0  0x00007f7fdce3c4aa in poll () from /usr/lib/libc.so.12
#1  0x00007f7fdd606dd7 in poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at /archive/foreign/src/lib/libpthread/pthread_cancelstub.c:412
#2  0x00007f7fdf651cdd in g_main_context_iterate () from /usr/pkg/lib/libglib-2.0.so.0
#3  0x00007f7fdf651db4 in g_main_context_iteration () from /usr/pkg/lib/libglib-2.0.so.0
#4  0x00007f7fd460714d in ?? () from /usr/pkg/lib/gio/modules/libdconfsettings.so
#5  0x00007f7fdf67779a in g_thread_proxy () from /usr/pkg/lib/libglib-2.0.so.0
#6  0x00007f7fdd60a6ac in pthread__create_tramp (cookie=0x7f7ff7bbb000) at /archive/foreign/src/lib/libpthread/pthread.c:572
#7  0x00007f7fdce85d80 in __mknod50 () from /usr/lib/libc.so.12
#8  0x00010102464c457f in ?? ()
#9  0x0000000000000000 in ?? ()

Thread 2 (LWP 3):
#0  0x00007f7fdce3c4aa in poll () from /usr/lib/libc.so.12
#1  0x00007f7fdd606dd7 in poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at /archive/foreign/src/lib/libpthread/pthread_cancelstub.c:412
#2  0x00007f7fdf651cdd in g_main_context_iterate () from /usr/pkg/lib/libglib-2.0.so.0
#3  0x00007f7fdf65203f in g_main_loop_run () from /usr/pkg/lib/libglib-2.0.so.0
#4  0x00007f7fe16e5cfb in gdbus_shared_thread_func () from /usr/pkg/lib/libgio-2.0.so.0
#5  0x00007f7fdf67779a in g_thread_proxy () from /usr/pkg/lib/libglib-2.0.so.0
#6  0x00007f7fdd60a6ac in pthread__create_tramp (cookie=0x7f7ff7372000) at /archive/foreign/src/lib/libpthread/pthread.c:572
#7  0x00007f7fdce85d80 in __mknod50 () from /usr/lib/libc.so.12
#8  0x00010102464c457f in ?? ()
#9  0x0000000000000000 in ?? ()

Thread 1 (LWP 1):
#0  0x00007f7fdce3c4aa in poll () from /usr/lib/libc.so.12
#1  0x00007f7fdd606dd7 in poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at /archive/foreign/src/lib/libpthread/pthread_cancelstub.c:412
#2  0x00007f7fdf651cdd in g_main_context_iterate () from /usr/pkg/lib/libglib-2.0.so.0
#3  0x00007f7fdf65203f in g_main_loop_run () from /usr/pkg/lib/libglib-2.0.so.0
#4  0x00007f7fe16e5cfb in gdbus_shared_thread_func () from /usr/pkg/lib/libgio-2.0.so.0
#5  0x00007f7fdf67779a in g_thread_proxy () from /usr/pkg/lib/libglib-2.0.so.0
#6  0x00007f7fdd60a6ac in pthread__create_tramp (cookie=0x7f7ff7372000) at /archive/foreign/src/lib/libpthread/pthread.c:572
#7  0x00007f7fdce85d80 in __mknod50 () from /usr/lib/libc.so.12
#8  0x00010102464c457f in ?? ()
#9  0x0000000000000000 in ?? ()

For comparison, here's the same for a gnucash started in gdb in the
foreground after it opened my default file:

(gdb) thread apply all bt
[New LWP 4]
[New LWP 3]
[New LWP 2]

Thread 4 (LWP 2):
#0  0x00007f7fdce3c4aa in poll () from /usr/lib/libc.so.12
#1  0x00007f7fdd606dd7 in poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at /archive/foreign/src/lib/libpthread/pthread_cancelstub.c:412
#2  0x00007f7fdf651cdd in g_main_context_iterate () from /usr/pkg/lib/libglib-2.0.so.0
#3  0x00007f7fdf651db4 in g_main_context_iteration () from /usr/pkg/lib/libglib-2.0.so.0
#4  0x00007f7fd460714d in ?? () from /usr/pkg/lib/gio/modules/libdconfsettings.so
#5  0x00007f7fdf67779a in g_thread_proxy () from /usr/pkg/lib/libglib-2.0.so.0
#6  0x00007f7fdd60a6ac in pthread__create_tramp (cookie=0x7f7ff7bbb000) at /archive/foreign/src/lib/libpthread/pthread.c:572
#7  0x00007f7fdce85d80 in __mknod50 () from /usr/lib/libc.so.12
#8  0x00010102464c457f in ?? ()
#9  0x0000000000000000 in ?? ()

Thread 3 (LWP 3):
#0  0x00007f7fdce3c4aa in poll () from /usr/lib/libc.so.12
#1  0x00007f7fdd606dd7 in poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at /archive/foreign/src/lib/libpthread/pthread_cancelstub.c:412
#2  0x00007f7fdf651cdd in g_main_context_iterate () from /usr/pkg/lib/libglib-2.0.so.0
#3  0x00007f7fdf65203f in g_main_loop_run () from /usr/pkg/lib/libglib-2.0.so.0
#4  0x00007f7fe16e5cfb in gdbus_shared_thread_func () from /usr/pkg/lib/libgio-2.0.so.0
#5  0x00007f7fdf67779a in g_thread_proxy () from /usr/pkg/lib/libglib-2.0.so.0
#6  0x00007f7fdd60a6ac in pthread__create_tramp (cookie=0x7f7ff7768000) at /archive/foreign/src/lib/libpthread/pthread.c:572
#7  0x00007f7fdce85d80 in __mknod50 () from /usr/lib/libc.so.12
#8  0x0000000000000000 in ?? ()

Thread 2 (LWP 4):
#0  0x00007f7fdce3c4aa in poll () from /usr/lib/libc.so.12
#1  0x00007f7fdd606dd7 in poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at /archive/foreign/src/lib/libpthread/pthread_cancelstub.c:412
#2  0x00007f7fdf651cdd in g_main_context_iterate () from /usr/pkg/lib/libglib-2.0.so.0
#3  0x00007f7fdf651db4 in g_main_context_iteration () from /usr/pkg/lib/libglib-2.0.so.0
#4  0x00007f7fdf6534d3 in glib_worker_main () from /usr/pkg/lib/libglib-2.0.so.0
#5  0x00007f7fdf67779a in g_thread_proxy () from /usr/pkg/lib/libglib-2.0.so.0
#6  0x00007f7fdd60a6ac in pthread__create_tramp (cookie=0x7f7ff05e2000) at /archive/foreign/src/lib/libpthread/pthread.c:572
#7  0x00007f7fdce85d80 in __mknod50 () from /usr/lib/libc.so.12
#8  0x00010102464c457f in ?? ()
#9  0x0000000000000000 in ?? ()

Thread 1 (LWP 1):
#0  0x00007f7fdce3c4aa in poll () from /usr/lib/libc.so.12
#1  0x00007f7fdd606dd7 in poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at /archive/foreign/src/lib/libpthread/pthread_cancelstub.c:412
#2  0x00007f7fdf651cdd in g_main_context_iterate () from /usr/pkg/lib/libglib-2.0.so.0
#3  0x00007f7fdf65203f in g_main_loop_run () from /usr/pkg/lib/libglib-2.0.so.0
#4  0x00007f7fe774a15f in gtk_main () from /usr/pkg/lib/libgtk-x11-2.0.so.0
#5  0x00007f7fec27099b in gnc_ui_start_event_loop () from /usr/pkg/lib/gnucash/libgncmod-gnome-utils.so
#6  0x000000000040385d in inner_main (closure=0x0, argc=1, argv=0x7f7fffffd5e0) at gnucash-bin.c:620
#7  0x00007f7fe8a69694 in invoke_main_func () from /usr/pkg/lib/libguile.so.17
#8  0x00007f7fe8a3b01f in c_body () from /usr/pkg/lib/libguile.so.17
#9  0x00007f7fe8aaf1c7 in scm_c_catch () from /usr/pkg/lib/libguile.so.17
#10 0x00007f7fe8a3afe4 in scm_c_with_continuation_barrier () from /usr/pkg/lib/libguile.so.17
#11 0x00007f7fe8aacb3d in scm_with_guile () from /usr/pkg/lib/libguile.so.17
#12 0x00007f7fe8a69657 in scm_boot_guile () from /usr/pkg/lib/libguile.so.17
#13 0x000000000040316f in main (argc=1, argv=0x7f7fffffd5e0) at gnucash-bin.c:774

Is it possible that glib or gtk make some threads by themselves?
 Thomas


More information about the gnucash-devel mailing list