Re: [Evolution] Unable to retrieve message.

On Mon, 2014-06-23 at 15:07 +0200, Svante Signell wrote:

Howe to make gdb stop at the correct thread to get a backtrace?
[New Thread 0x7fff56ffd700 (LWP 24666)]
(evolution:24607): GLib-GObject-CRITICAL **: g_closure_unref: 
'closure->ref_count > 0' failed
(evolution:24607): GLib-GIO-CRITICAL **: g_output_stream_write_all:
assertion 'buffer != NULL' failed
[Thread 0x7fff314c0700 (LWP 24644) exited]
[Thread 0x7fff56ffd700 (LWP 24666) exited]
[New Thread 0x7fff56ffd700 (LWP 24679)]

try this:
   $ gdb evolution --ex r --ex "b g_logv" --ex c
which runs evolution under gdb and just before you will face the 
critical warning from the top (the second, not the first, which comes 
from webkitgtk3 code) press Ctrl+C, which will setup a breakpoint and 
continue in execution. Since then, the gdb will stop on each warning, 
debug message,... anything printed through that g_logv() function. 
Whenever it stops there, do these two gdb commands:
   (gdb) bt
   (gdb) c
which will print the backtrace and continue. Alternatively, you can use
   (gdb) bt full
to see also local variables and so on. Once you get the backtrace of 
the critical warning you wanted, just delete the breakpoint and 
   (gdb) d br 1
   (gdb) c
once you quit evolution quit also gdb
   (gdb) q

The backtrace will show where the 'buffer' was NULL, though it will 
probably not show why. Still, the information might be valuable.

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]