Comment 7 for bug 1369273

Revision history for this message
José L. Domingo López (ubuntu-24x7linux) wrote :

This has been affecting me since upgrading to 14.10 the other day. I did some testing, to rule out anything related to the user running the application, or the data file being used (goes back more a decade worth of transactions).

So I created a fresh new user and ran gnucash from the command line with core dumping enabled. gnucash started fine after lots of first-time initializations (as shown in the console output, due to GUILE_AUTO_COMPILE set to on).

Just after gnucash completed startup, I quitted the application from the menu. It got into a somewhat lengthy wait (10-20 seconds), to end up dumping core. A simple run of the core file through gdb shows as follows:
"""
$ gdb /usr/bin/gnucash core
GNU gdb (Ubuntu 7.8-1ubuntu4) 7.8.0.20141001-cvs
Reading symbols from /usr/bin/gnucash...(no debugging symbols found)...done.
[New LWP 12161]
[New LWP 12168]
[New LWP 12162]
[New LWP 12169]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
Core was generated by `gnucash'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0xa4a3d649 in dbi_shutdown_r () from /usr/lib/i386-linux-gnu/libdbi.so.1
(gdb) thread apply all bt

Thread 4 (Thread 0xa5d49b40 (LWP 12169)):
#0 0xb76f0c7c in __kernel_vsyscall ()
#1 0xb6adfd6b in poll () at ../sysdeps/unix/syscall-template.S:81
#2 0xb6c1fe80 in g_poll () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3 0xb6c10eb4 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#4 0xb6c10ff6 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#5 0xb6c11050 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#6 0xb6c380ba in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#7 0xb6bb3f16 in start_thread (arg=0xa5d49b40) at pthread_create.c:309
#8 0xb6aea9ae in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:129

Thread 3 (Thread 0xb014db40 (LWP 12162)):
#0 0xb76f0c7c in __kernel_vsyscall ()
#1 0xb6adfd6b in poll () at ../sysdeps/unix/syscall-template.S:81
#2 0xb6c1fe80 in g_poll () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3 0xb6c10eb4 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#4 0xb6c10ff6 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#5 0xb015448b in ?? () from /usr/lib/i386-linux-gnu/gio/modules/libdconfsettings.so
#6 0xb6c380ba in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#7 0xb6bb3f16 in start_thread (arg=0xb014db40) at pthread_create.c:309
#8 0xb6aea9ae in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:129

Thread 2 (Thread 0xaf6f0b40 (LWP 12168)):
#0 0xb76f0c7c in __kernel_vsyscall ()
#1 0xb6adfd6b in poll () at ../sysdeps/unix/syscall-template.S:81
#2 0xb6c1fe80 in g_poll () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3 0xb6c10eb4 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#4 0xb6c112d9 in g_main_loop_run () from /lib/i386-linux-gnu/libglib-2.0.so.0
#5 0xb63b46f5 in ?? () from /usr/lib/i386-linux-gnu/libgio-2.0.so.0
#6 0xb6c380ba in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#7 0xb6bb3f16 in start_thread (arg=0xaf6f0b40) at pthread_create.c:309
#8 0xb6aea9ae in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:129

Thread 1 (Thread 0xb12dd8c0 (LWP 12161)):
#0 0xa4a3d649 in dbi_shutdown_r () from /usr/lib/i386-linux-gnu/libdbi.so.1
#1 0xa4a3d6dd in dbi_shutdown () from /usr/lib/i386-linux-gnu/libdbi.so.1
#2 0xa4a522f4 in gnc_module_finalize_backend_dbi () from /usr/lib/i386-linux-gnu/gnucash/gnucash/libgncmod-backend-dbi.so
#3 0xa4a52314 in qof_backend_module_finalize () from /usr/lib/i386-linux-gnu/gnucash/gnucash/libgncmod-backend-dbi.so
#4 0xb73b4b79 in qof_finalize_backend_libraries () from /usr/lib/i386-linux-gnu/gnucash/libgnc-qof.so.1
#5 0xb73c53e5 in qof_close () from /usr/lib/i386-linux-gnu/gnucash/libgnc-qof.so.1
#6 0xb7447469 in gnc_engine_shutdown () from /usr/lib/i386-linux-gnu/gnucash/gnucash/libgncmod-engine.so
#7 0xb75a2fef in gnc_shutdown () from /usr/lib/i386-linux-gnu/gnucash/gnucash/libgncmod-gnome-utils.so
#8 0xb725138d in ?? () from /usr/lib/libguile-2.0.so.22
#9 0xb7227dfd in ?? () from /usr/lib/libguile-2.0.so.22
#10 0xb72b18e7 in ?? () from /usr/lib/libguile-2.0.so.22
#11 0xb728afb9 in ?? () from /usr/lib/libguile-2.0.so.22
#12 0xb72c9f20 in ?? () from /usr/lib/libguile-2.0.so.22
#13 0xb72ca539 in ?? () from /usr/lib/libguile-2.0.so.22
#14 0xb72324f3 in scm_call_4 () from /usr/lib/libguile-2.0.so.22
#15 0xb72b1acf in scm_catch_with_pre_unwind_handler () from /usr/lib/libguile-2.0.so.22
#16 0xb72b1bd4 in scm_c_catch () from /usr/lib/libguile-2.0.so.22
#17 0xb72285d1 in ?? () from /usr/lib/libguile-2.0.so.22
#18 0xb72286d3 in scm_c_with_continuation_barrier () from /usr/lib/libguile-2.0.so.22
#19 0xb72aef7e in ?? () from /usr/lib/libguile-2.0.so.22
#20 0xb60df2c1 in GC_call_with_stack_base () from /usr/lib/i386-linux-gnu/libgc.so.1
#21 0xb72af3e6 in scm_with_guile () from /usr/lib/libguile-2.0.so.22
#22 0xb72515dc in scm_boot_guile () from /usr/lib/libguile-2.0.so.22
#23 0x08049f06 in main ()
"""

So it looks like shutting down some database caused a SIGSEV and the program to crash. This is with the "python-gnucash" package already installed, prior to that I got what the reported mentioned, now I don't get the startup error but I do get the SIGSEGV on shutdown.

I can't tell whether the transactions file (the one keeping every single money movement since using gnucash for the first time) get updated fine or gets corrupted somehow, I may notice in the coming days, though.

Another attempt at getting more information was running the program from the debugger and setting a breakpoint in the function leading to the crash, please note by not having created a debugging binary or referencing the source code there is little I am able to do, but this may help. See below:
"""
$ gdb /usr/bin/gnucash

(gdb) break dbi_shutdown
Function "dbi_shutdown" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (dbi_shutdown) pending.

(gdb) run
Starting program: /usr/bin/gnucash
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
warning: Temporarily disabling breakpoints for unloaded shared library "/usr/lib/i386-linux-gnu/libdbi.so.1"
[New Thread 0xb0a38b40 (LWP 12420)]
[New Thread 0xaff83b40 (LWP 12424)]
[New Thread 0xa6649b40 (LWP 12425)]
[New Thread 0xa5e48b40 (LWP 12426)]
[Thread 0xa5e48b40 (LWP 12426) exited]
Found Finance::Quote version 1.35

Breakpoint 1, 0xa53286c0 in dbi_shutdown () from /usr/lib/i386-linux-gnu/libdbi.so.1
(gdb) step
Single stepping until exit from function dbi_shutdown,
which has no line number information.
Warning:
Cannot insert breakpoint 0.
Cannot access memory at address 0x0

0xa5326e40 in ?? () from /usr/lib/i386-linux-gnu/libdbi.so.1
(gdb) next
Cannot find bounds of current function
(gdb) cont
Continuing.

Breakpoint 1, 0xa53286c0 in dbi_shutdown () from /usr/lib/i386-linux-gnu/libdbi.so.1
(gdb) cont
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0xa5328649 in dbi_shutdown_r () from /usr/lib/i386-linux-gnu/libdbi.so.1
"""

By the way, the application version used on all tests is:
"""
$ gnucash --version
GnuCash 2.6.3
This copy was built from rev 4e4a032+ on 2014-05-30.
"""

Hope this helps.