Package: liferea Version: 1.12~rc2-2 Severity: normal Usertags: crash liferea crashes when the database isn't readable and does not attempt to fix the issue nor notify the user about the issue. This sort of thing can happen accidentally when restoring backups or running cleanup tools so it would be nice to handle it more elegantly.
pabs@chianamo ~ $ chmod 000 .local/share/liferea/liferea.db pabs@chianamo ~ $ gdb -batch -n -ex 'set pagination off' -ex run -ex bt -ex 'thread apply all bt full' --args liferea [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7fffe11e0700 (LWP 23808)] [New Thread 0x7fffe03fa700 (LWP 23809)] [New Thread 0x7fffdfbf9700 (LWP 23810)] [New Thread 0x7fffddafe700 (LWP 23812)] ** (liferea:22341): ERROR **: Data base file /home/pabs/.local/share/liferea/liferea.db could not be opened (error code 14: unable to open database file)... Thread 1 "liferea" received signal SIGTRAP, Trace/breakpoint trap. _g_log_abort (breakpoint=1) at ././glib/gmessages.c:487 487 ././glib/gmessages.c: No such file or directory. #0 0x00007ffff2979261 in _g_log_abort (breakpoint=1) at ././glib/gmessages.c:487 #1 0x00007ffff297a2b7 in g_log_default_handler (log_domain=log_domain@entry=0x0, log_level=log_level@entry=6, message=message@entry=0x55555592e260 "Data base file /home/pabs/.local/share/liferea/liferea.db could not be opened (error code 14: unable to open database file)...", unused_data=unused_data@entry=0x0) at ././glib/gmessages.c:2816 #2 0x00007ffff297a5c4 in g_logv (log_domain=0x0, log_level=G_LOG_LEVEL_ERROR, format=<optimized out>, args=args@entry=0x7fffffffd380) at ././glib/gmessages.c:1275 #3 0x00007ffff297a7cf in g_log (log_domain=log_domain@entry=0x0, log_level=log_level@entry=G_LOG_LEVEL_ERROR, format=format@entry=0x5555555afbe8 "Data base file %s could not be opened (error code %d: %s)...") at ././glib/gmessages.c:1337 #4 0x00005555555747da in db_open () at db.c:242 #5 0x00005555555747da in db_init () at db.c:262 #6 0x0000555555580c0f in on_app_startup (gapp=<optimized out>, user_data=<optimized out>) at liferea_application.c:139 #10 0x00007ffff2c67faf in <emit signal ??? on instance 0x5555558210e0 [LifereaApplication]> (instance=instance@entry=0x5555558210e0, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447 #7 0x00007ffff2c4cf75 in g_closure_invoke (closure=0x555555822e60, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7fffffffd670, invocation_hint=invocation_hint@entry=0x7fffffffd5f0) at ././gobject/gclosure.c:804 #8 0x00007ffff2c5ef82 in signal_emit_unlocked_R (node=node@entry=0x55555581ea00, detail=detail@entry=0, instance=instance@entry=0x5555558210e0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd670) at ././gobject/gsignal.c:3635 #9 0x00007ffff2c67bcc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffd820) at ././gobject/gsignal.c:3391 #11 0x00007ffff3162ae2 in g_application_register (application=application@entry=0x5555558210e0 [LifereaApplication], cancellable=cancellable@entry=0x0, error=error@entry=0x7fffffffd958) at ././gio/gapplication.c:2049 #12 0x00007ffff316330f in g_application_real_local_command_line (application=0x5555558210e0 [LifereaApplication], arguments=0x7fffffffda58, exit_status=0x7fffffffda54) at ././gio/gapplication.c:1012 #13 0x00007ffff3163672 in g_application_run (application=0x5555558210e0 [LifereaApplication], argc=1, argv=0x7fffffffdba8) at ././gio/gapplication.c:2350 #14 0x0000555555570f77 in main (argc=1, argv=0x7fffffffdba8) at main.c:82 Thread 5 (Thread 0x7fffddafe700 (LWP 23812)): #0 0x00007ffff214954d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007ffff29739f6 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x555555875380, timeout=<optimized out>, context=0x55555591cec0) at ././glib/gmain.c:4228 poll_func = 0x7ffff2983840 <g_poll> max_priority = 2147483647 timeout = -1 some_ready = <optimized out> nfds = 1 allocated_nfds = 1 fds = 0x555555875380 #2 0x00007ffff29739f6 in g_main_context_iterate (context=context@entry=0x55555591cec0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ././glib/gmain.c:3924 max_priority = 2147483647 timeout = -1 some_ready = <optimized out> nfds = 1 allocated_nfds = 1 fds = 0x555555875380 #3 0x00007ffff2973b0c in g_main_context_iteration (context=context@entry=0x55555591cec0, may_block=may_block@entry=1) at ././glib/gmain.c:3990 retval = <optimized out> #4 0x00007fffddb0646d in dconf_gdbus_worker_thread (user_data=0x55555591cec0) at dconf-gdbus-thread.c:82 context = 0x55555591cec0 #5 0x00007ffff299b345 in g_thread_proxy (data=0x555555a0a800) at ././glib/gthread.c:784 thread = 0x555555a0a800 #6 0x00007ffff240f424 in start_thread (arg=0x7fffddafe700) at pthread_create.c:333 __res = <optimized out> pd = 0x7fffddafe700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140736912680704, 4870277242328822111, 0, 140737488342751, 0, 140737354125376, -4870352697243618977, -4870264932547448481}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #7 0x00007ffff21529bf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105 Thread 4 (Thread 0x7fffdfbf9700 (LWP 23810)): #0 0x00007ffff214954d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007ffff29739f6 in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x555555809a00, timeout=<optimized out>, context=0x555555835830) at ././glib/gmain.c:4228 poll_func = 0x7ffff2983840 <g_poll> max_priority = 2147483647 timeout = -1 some_ready = <optimized out> nfds = 2 allocated_nfds = 2 fds = 0x555555809a00 #2 0x00007ffff29739f6 in g_main_context_iterate (context=0x555555835830, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ././glib/gmain.c:3924 max_priority = 2147483647 timeout = -1 some_ready = <optimized out> nfds = 2 allocated_nfds = 2 fds = 0x555555809a00 #3 0x00007ffff2973d82 in g_main_loop_run (loop=0x5555558095f0) at ././glib/gmain.c:4125 __func__ = "g_main_loop_run" #4 0x00007ffff318f4f6 in gdbus_shared_thread_func (user_data=0x555555835800) at ././gio/gdbusprivate.c:247 data = 0x555555835800 #5 0x00007ffff299b345 in g_thread_proxy (data=0x5555558378a0) at ././glib/gthread.c:784 thread = 0x5555558378a0 #6 0x00007ffff240f424 in start_thread (arg=0x7fffdfbf9700) at pthread_create.c:333 __res = <optimized out> pd = 0x7fffdfbf9700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140736947263232, 4870277242328822111, 0, 140737488344703, 0, 140737354125376, -4870348164442508961, -4870264932547448481}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #7 0x00007ffff21529bf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105 Thread 3 (Thread 0x7fffe03fa700 (LWP 23809)): #0 0x00007ffff214954d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007ffff29739f6 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x555555809790, timeout=<optimized out>, context=0x555555834f90) at ././glib/gmain.c:4228 poll_func = 0x7ffff2983840 <g_poll> max_priority = 2147483647 timeout = -1 some_ready = <optimized out> nfds = 1 allocated_nfds = 1 fds = 0x555555809790 #2 0x00007ffff29739f6 in g_main_context_iterate (context=context@entry=0x555555834f90, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ././glib/gmain.c:3924 max_priority = 2147483647 timeout = -1 some_ready = <optimized out> nfds = 1 allocated_nfds = 1 fds = 0x555555809790 #3 0x00007ffff2973b0c in g_main_context_iteration (context=0x555555834f90, may_block=may_block@entry=1) at ././glib/gmain.c:3990 retval = <optimized out> #4 0x00007ffff2973b51 in glib_worker_main (data=<optimized out>) at ././glib/gmain.c:5783 #5 0x00007ffff299b345 in g_thread_proxy (data=0x555555837850) at ././glib/gthread.c:784 thread = 0x555555837850 #6 0x00007ffff240f424 in start_thread (arg=0x7fffe03fa700) at pthread_create.c:333 __res = <optimized out> pd = 0x7fffe03fa700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140736955655936, 4870277242328822111, 0, 140737488344351, 0, 140737354125376, -4870234914207977121, -4870264932547448481}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #7 0x00007ffff21529bf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105 Thread 2 (Thread 0x7fffe11e0700 (LWP 23808)): #0 0x00007ffff241514f in pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 #1 0x00007fffe9af839c in __gthread_cond_wait (__mutex=<optimized out>, __cond=__cond@entry=0x0) at /build/gcc-6-jXyF2a/gcc-6-6.2.1/build/x86_64-linux-gnu/libstdc++-v3/include/x86_64-linux-gnu/bits/gthr-default.h:864 __e = <optimized out> #2 0x00007fffe9af839c in std::condition_variable::wait(std::unique_lock<std::mutex>&) (this=this@entry=0x7fffeee3be68 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3080>, __lock=...) at ../../../../../src/libstdc++-v3/src/c++11/condition_variable.cc:53 __e = <optimized out> #3 0x00007fffeec51e56 in std::_V2::condition_variable_any::wait<std::unique_lock<bmalloc::Mutex> >(std::unique_lock<bmalloc::Mutex>&) (__lock=<synthetic pointer>..., this=<optimized out>) at /usr/include/c++/6/condition_variable:251 __mutex = std::shared_ptr (count 2, weak 0) 0x0 __my_lock = {_M_device = 0x0, _M_owns = false} __my_lock2 = {_M_device = 0x5555558194a0, _M_owns = true} lock = {_M_device = 0x7fffeee3be64 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3076>, _M_owns = false} expectedState = bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::Running #4 0x00007fffeec51e56 in std::_V2::condition_variable_any::wait<std::unique_lock<bmalloc::Mutex>, bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop()::{lambda()#1}>(std::unique_lock<bmalloc::Mutex>&, bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop()::{lambda()#1}) (__p=..., __lock=..., this=<optimized out>) at /usr/include/c++/6/condition_variable:260 lock = {_M_device = 0x7fffeee3be64 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3076>, _M_owns = false} expectedState = bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::Running #5 0x00007fffeec51e56 in bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop() (this=0x7fffeee3be60 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3072>) at ./Source/bmalloc/bmalloc/AsyncTask.h:126 lock = {_M_device = 0x7fffeee3be64 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3076>, _M_owns = false} expectedState = bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::Running #6 0x00007fffeec51f89 in bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadEntryPoint(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*) (asyncTask=<optimized out>) at ./Source/bmalloc/bmalloc/AsyncTask.h:106 #7 0x00007fffe9afdcdf in std::execute_native_thread_routine(void*) (__p=0x555555819510) at ../../../../../src/libstdc++-v3/src/c++11/thread.cc:83 __t = std::unique_ptr<std::thread::_State> containing 0x555555819510 #8 0x00007ffff240f424 in start_thread (arg=0x7fffe11e0700) at pthread_create.c:333 __res = <optimized out> pd = 0x7fffe11e0700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140736970229504, 4870277242328822111, 0, 140737488345359, 0, 140737354125376, -4870236852311969441, -4870264932547448481}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #9 0x00007ffff21529bf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105 Thread 1 (Thread 0x7ffff7f08fc0 (LWP 22341)): #0 0x00007ffff2979261 in _g_log_abort (breakpoint=1) at ././glib/gmessages.c:487 debugger_present = 1 #1 0x00007ffff297a2b7 in g_log_default_handler (log_domain=log_domain@entry=0x0, log_level=log_level@entry=6, message=message@entry=0x55555592e260 "Data base file /home/pabs/.local/share/liferea/liferea.db could not be opened (error code 14: unable to open database file)...", unused_data=unused_data@entry=0x0) at ././glib/gmessages.c:2816 domains = <optimized out> fields = {{key = 0x7ffff29c59ae "GLIB_OLD_LOG_API", value = 0x7ffff2a1a3de, length = -1}, {key = 0x7ffff29c58d4 "MESSAGE", value = 0x55555592e260, length = -1}, {key = 0x7ffff29c58e7 "PRIORITY", value = 0x7ffff29bf93a, length = -1}, {key = 0x4 <error: Cannot access memory at address 0x4>, value = 0x0, length = 140737263668264}} n_fields = <optimized out> #2 0x00007ffff297a5c4 in g_logv (log_domain=0x0, log_level=G_LOG_LEVEL_ERROR, format=<optimized out>, args=args@entry=0x7fffffffd380) at ././glib/gmessages.c:1275 domain = 0x0 data = 0x0 depth = 1 log_func = 0x7ffff297a1f0 <g_log_default_handler> domain_fatal_mask = <optimized out> masquerade_fatal = 0 test_level = 6 was_fatal = <optimized out> was_recursion = <optimized out> msg = 0x55555592e260 "Data base file /home/pabs/.local/share/liferea/liferea.db could not be opened (error code 14: unable to open database file)..." msg_alloc = 0x55555592e260 "Data base file /home/pabs/.local/share/liferea/liferea.db could not be opened (error code 14: unable to open database file)..." i = 2 #3 0x00007ffff297a7cf in g_log (log_domain=log_domain@entry=0x0, log_level=log_level@entry=G_LOG_LEVEL_ERROR, format=format@entry=0x5555555afbe8 "Data base file %s could not be opened (error code %d: %s)...") at ././glib/gmessages.c:1337 args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fffffffd460, reg_save_area = 0x7fffffffd3a0}} #4 0x00005555555747da in db_open () at db.c:242 filename = 0x5555558fcd80 "/home/pabs/.local/share/liferea/liferea.db" res = 14 res = <optimized out> __PRETTY_FUNCTION__ = "db_init" __func__ = "db_init" #5 0x00005555555747da in db_init () at db.c:262 res = <optimized out> __PRETTY_FUNCTION__ = "db_init" __func__ = "db_init" #6 0x0000555555580c0f in on_app_startup (gapp=<optimized out>, user_data=<optimized out>) at liferea_application.c:139 app = 0x5555558210e0 [LifereaApplication] #10 0x00007ffff2c67faf in <emit signal ??? on instance 0x5555558210e0 [LifereaApplication]> (instance=instance@entry=0x5555558210e0, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447 var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffd900, reg_save_area = 0x7fffffffd840}} #7 0x00007ffff2c4cf75 in g_closure_invoke (closure=0x555555822e60, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7fffffffd670, invocation_hint=invocation_hint@entry=0x7fffffffd5f0) at ././gobject/gclosure.c:804 marshal = <optimized out> marshal_data = <optimized out> in_marshal = 0 real_closure = 0x555555822e40 __func__ = "g_closure_invoke" #8 0x00007ffff2c5ef82 in signal_emit_unlocked_R (node=node@entry=0x55555581ea00, detail=detail@entry=0, instance=instance@entry=0x5555558210e0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd670) at ././gobject/gsignal.c:3635 tmp = <optimized out> handler = 0x55555581a8c0 accumulator = 0x0 emission = {next = 0x0, instance = 0x5555558210e0, ihint = {signal_id = 6, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 4} handler_list = 0x55555581a8c0 return_accu = 0x0 accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}} signal_id = 6 max_sequential_handler_number = 20 return_value_altered = 1 #9 0x00007ffff2c67bcc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffd820) at ././gobject/gsignal.c:3391 instance_and_params = 0x7fffffffd670 signal_return_type = <optimized out> param_values = 0x7fffffffd688 i = <optimized out> n_params = <optimized out> __func__ = "g_signal_emit_valist" #11 0x00007ffff3162ae2 in g_application_register (application=application@entry=0x5555558210e0 [LifereaApplication], cancellable=cancellable@entry=0x0, error=error@entry=0x7fffffffd958) at ././gio/gapplication.c:2049 __func__ = "g_application_register" #12 0x00007ffff316330f in g_application_real_local_command_line (application=0x5555558210e0 [LifereaApplication], arguments=0x7fffffffda58, exit_status=0x7fffffffda54) at ././gio/gapplication.c:1012 error = 0x0 n_args = <optimized out> #13 0x00007ffff3163672 in g_application_run (application=0x5555558210e0 [LifereaApplication], argc=1, argv=0x7fffffffdba8) at ././gio/gapplication.c:2350 arguments = 0x5555557fe0d0 status = -1 context = 0x5555558232e0 acquired_context = <optimized out> __func__ = "g_application_run" #14 0x0000555555570f77 in main (argc=1, argv=0x7fffffffdba8) at main.c:82 status = <optimized out> -- System Information: Debian Release: 9.0 APT prefers testing-debug APT policy: (900, 'testing-debug'), (900, 'testing'), (800, 'unstable-debug'), (800, 'unstable'), (790, 'buildd-unstable'), (700, 'experimental-debug'), (700, 'experimental'), (690, 'buildd-experimental') Architecture: amd64 (x86_64) Kernel: Linux 4.9.0-1-amd64 (SMP w/4 CPU cores) Locale: LANG=en_AU.utf8, LC_CTYPE=en_AU.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages liferea depends on: ii dbus-x11 [dbus-session-bus] 1.10.14-1 ii dconf-gsettings-backend [gsettings-backend] 0.26.0-2 ii gir1.2-freedesktop 1.50.0-1 ii gir1.2-gtk-3.0 3.22.6-1 ii gir1.2-peas-1.0 1.20.0-1 ii libc6 2.24-9 ii libgdk-pixbuf2.0-0 2.36.3-1 ii libgirepository-1.0-1 1.50.0-1 ii libglib2.0-0 2.50.2-2 ii libgtk-3-0 3.22.6-1 ii libjson-glib-1.0-0 1.2.2-1 ii libpango-1.0-0 1.40.3-3 ii libpeas-1.0-0 1.20.0-1 ii libsoup2.4-1 2.56.0-2 ii libsqlite3-0 3.16.2-1 ii libwebkit2gtk-4.0-37 2.14.2-1 ii libxml2 2.9.4+dfsg1-2.1 ii libxslt1.1 1.1.29-2 ii liferea-data 1.12~rc2-2 ii python3-cairo 1.10.0+dfsg-5+b1 ii python3-gi 3.22.0-2 ii python3-notify2 0.3-3 ii python3.5 3.5.3~rc1-1 pn python3:any <none> Versions of packages liferea recommends: ii gir1.2-gnomekeyring-1.0 3.12.0-1+b1 ii gir1.2-gstreamer-1.0 1.10.2-1 ii gnome-keyring 3.20.0-3 Versions of packages liferea suggests: pn kget <none> ii network-manager 1.4.4-1 -- no debconf information -- bye, pabs https://wiki.debian.org/PaulWise
signature.asc
Description: This is a digitally signed message part