segfaults when running graphical reports

Geert Janssens janssens-geert at telenet.be
Thu Apr 24 07:24:11 EDT 2014


On Sunday 13 April 2014 13:16:38 John Ralls wrote:
> On Apr 13, 2014, at 12:06 PM, Thomas Klausner <tk at giga.or.at> wrote:
> > 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.> 

Whenever I'm debugging gnucash I also see multiple threads. I always 
assumed this is due to libguile.

John, at the end of this message you hint at libgncmod-python to be the 
culprit. Just for my education - how did you come to that conclusion ? I 
don't see that name mentioned anywhere in the backtrace.

Geert

> > 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
> 
> I don’t *think* there are any places that either of them would spawn a
> worker thread, but something is, and that’s a problem. Maybe it *is*
> the python module. Try renaming lib/gnucash/libgncmod-python.*.so to
> something and see if it loads correctly.
> 
> Regards,
> John Ralls
> 
> 
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel at gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel




More information about the gnucash-devel mailing list