[ltt-dev] lttv segfault on File->Quit

Atsushi Nemoto anemo at mba.ocn.ne.jp
Mon Jun 22 09:49:28 EDT 2009


On Fri, 19 Jun 2009 09:30:35 -0400, Mathieu Desnoyers <compudj at krystal.dyndns.org> wrote:
> > Hi.  lttv 0.12.14 (and maybe others) will cause segfault by Quit
> > command in File menu.
> > 
> > Here is gdb session log.  Just invoke lttv (without trace data) and
> > select Quit.
> > 
> 
> Thanks for the bug report !
> 
> It should be fixed in LTTV 0.12.16 now.

Thank you.  The problem I reported was fixed in 0.12.16, but it seems
there are still problems on Quit command.

If I selected "New window" or "New tab" before Quit command, lttv
sometimes crashes or freezes.  Though I cannot find a reliable way to
reproduce it, here are some examples:


1. New tab, Quit, then crash

$ gdb ../local/bin/lttv.real
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
(gdb) run -m guievents -m guifilter -m guicontrolflow -m resourceview -m guistatistics -m guitracecontrol --debug --verbose
Starting program: /work/local/bin/lttv.real -m guievents -m guifilter -m guicontrolflow -m resourceview -m guistatistics -m guitracecontrol --debug --verbose
[Thread debugging using libthread_db enabled]
[New Thread 0xb7c576b0 (LWP 25726)]
** (process:25726): DEBUG: Option verbose hook called
** INFO: Logging set to include INFO level messages
** (process:25726): DEBUG: GUI window_creation_hook()
** (lttv.real:25726): DEBUG: construct_main_window()
** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** INFO: h_guicontrolflow, 0xa112838
** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** Message: statistics viewer : background computation data ready.
** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** INFO: There are now : 1 windows

** (lttv.real:25726): DEBUG: get_events : SCROLL_NONE
** INFO: Entering seek_time_closest for time 0.0
** INFO: NOT Calling restore
** INFO: Entering seek_time_closest for time 4294967295.1000000000
** INFO: NOT Calling restore
** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** INFO: processlist_clear 0xa251120
** INFO: processlist_clear 0xa251120
** (lttv.real:25726): DEBUG: req : window start_time : 0, 0
** (lttv.real:25726): DEBUG: req : window time width : 1, 0
** (lttv.real:25726): DEBUG: req : window_end : 1, 0
** (lttv.real:25726): DEBUG: x is : 0, x+width is : 1
** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** Message: statistics viewer : background computation data ready.
** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** INFO: Old time window HOOK : 0, 0 to 1, 0
** INFO: New time window HOOK : 0, 0 to 1, 0
** INFO: scrolling
** INFO: not scrolling
** INFO: update_current_time
** INFO: Entering seek_time_closest for time 0.0
** INFO: NOT Calling restore
** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** INFO: event_update_selection
** INFO: New current time HOOK : 0, 0
** (lttv.real:25726): DEBUG: size allocate 0xa23b6f8 : last_num_visible_events : 1
** (lttv.real:25726): DEBUG: num_visible_events : 7, value 0.000000
** (lttv.real:25726): DEBUG: get_events : SCROLL_JUMP
** INFO: Entering seek_time_closest for time 0.0
** INFO: NOT Calling restore
** (lttv.real:25726): DEBUG: drawing configure event
** (lttv.real:25726): DEBUG: New alloc draw size : 642 by 176
** (lttv.real:25726): DEBUG: req : window start_time : 0, 0
** (lttv.real:25726): DEBUG: req : window time width : 1, 0
** (lttv.real:25726): DEBUG: req : window_end : 1, 0
** (lttv.real:25726): DEBUG: x is : 0, x+width is : 642
** (lttv.real:25726): DEBUG: AFTER EXPOSE
** (lttv.real:25726): DEBUG: ruler expose event
** (lttv.real:25726): DEBUG: lttv_menus_destroy()
** (lttv.real:25726): DEBUG: lttv_toolbars_destroy
** (lttv.real:25726): DEBUG: attribute_finalize()
** INFO: There are now : 0 windows

** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** (lttv.real:25726): DEBUG: attribute_finalize()
** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** (lttv.real:25726): DEBUG: attribute_finalize()
** INFO: Unload library builtin: module print used
** INFO: Module module: destroy()
** INFO: Destroy module.c
** INFO: Unload library builtin: locked loaded
** INFO: Unload library builtin: locked loaded
** INFO: Module guievents: destroy()
** (lttv.real:25726): DEBUG: lttv_hooks_destroy()
** INFO: Unload library guievents: locked loaded
** INFO: Module print: destroy()
** INFO: Unload library builtin: locked loaded
** INFO: Unload library guievents: locked loaded
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library guievents: module lttvwindow used
** INFO: Module guifilter: destroy()
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library guifilter: locked loaded
** INFO: Unload library guifilter: close the GModule
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library guievents: module lttvwindow used
** INFO: Module guicontrolflow: destroy()
** INFO: GUI Control Flow Viewer destroy()
** INFO: Walk destroy GUI Control Flow Viewer
** INFO: CFV.c : guicontrolflow_destructor_full, 0xa250418
** (lttv.real:25726): DEBUG: processlist_destroy 0xa251120
** (lttv.real:25726): DEBUG: processlist_destroy end
** INFO: drawing_destroy 0xa247318
** INFO: drawing_destroy end
** INFO: CFV.c : guicontrolflow_destructor, 0xa250418
** INFO: 0xb73d5a50, 0xa250418, 0xa112838
** INFO: widget still exists
** INFO: CFV.c : guicontrolflow_destructor end, 0xa250430
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library guicontrolflow: locked loaded
** INFO: Unload library guicontrolflow: close the GModule
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library guievents: module lttvwindow used
** INFO: Module resourceview: destroy()
** INFO: GUI resource viewer destroy()
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library resourceview: locked loaded
** INFO: Unload library resourceview: close the GModule
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library guievents: module lttvwindow used
** INFO: Module guistatistics: destroy()
** (lttv.real:25726): DEBUG: CFV.c : statistic_destroy_walk, 0xa25fcc0

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb7c576b0 (LWP 25726)]
0xb7e78cb6 in ?? () from /usr/lib/libglib-2.0.so.0
(gdb) bt
#0  0xb7e78cb6 in ?? () from /usr/lib/libglib-2.0.so.0
#1  0xbf82d518 in ?? ()
#2  0x00000000 in ?? ()


2. New window, Quit, then freeze

(gdb) run -m guievents -m guifilter -m guicontrolflow -m resourceview -m guistatistics -m guitracecontrol --debug --verbose
Starting program: /work/local/bin/lttv.real -m guievents -m guifilter -m guicontrolflow -m resourceview -m guistatistics -m guitracecontrol --debug --verbose
[Thread debugging using libthread_db enabled]
[New Thread 0xb7c396b0 (LWP 26191)]
** (process:26191): DEBUG: Option verbose hook called
** INFO: Logging set to include INFO level messages
** (process:26191): DEBUG: GUI window_creation_hook()
** (lttv.real:26191): DEBUG: construct_main_window()
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** INFO: h_guicontrolflow, 0x8e58838
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** Message: statistics viewer : background computation data ready.
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** INFO: There are now : 1 windows

** (lttv.real:26191): DEBUG: get_events : SCROLL_NONE
** INFO: Entering seek_time_closest for time 0.0
** INFO: NOT Calling restore
** INFO: Entering seek_time_closest for time 4294967295.1000000000
** INFO: NOT Calling restore
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** INFO: processlist_clear 0x8f97170
** INFO: processlist_clear 0x8f97170
** (lttv.real:26191): DEBUG: req : window start_time : 0, 0
** (lttv.real:26191): DEBUG: req : window time width : 1, 0
** (lttv.real:26191): DEBUG: req : window_end : 1, 0
** (lttv.real:26191): DEBUG: x is : 0, x+width is : 1
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** Message: statistics viewer : background computation data ready.
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** INFO: Old time window HOOK : 0, 0 to 1, 0
** INFO: New time window HOOK : 0, 0 to 1, 0
** INFO: scrolling
** INFO: not scrolling
** INFO: update_current_time
** INFO: Entering seek_time_closest for time 0.0
** INFO: NOT Calling restore
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** INFO: event_update_selection
** INFO: New current time HOOK : 0, 0
** (lttv.real:26191): DEBUG: size allocate 0x8f81720 : last_num_visible_events : 1
** (lttv.real:26191): DEBUG: num_visible_events : 7, value 0.000000
** (lttv.real:26191): DEBUG: get_events : SCROLL_JUMP
** INFO: Entering seek_time_closest for time 0.0
** INFO: NOT Calling restore
** (lttv.real:26191): DEBUG: drawing configure event
** (lttv.real:26191): DEBUG: New alloc draw size : 642 by 176
** (lttv.real:26191): DEBUG: req : window start_time : 0, 0
** (lttv.real:26191): DEBUG: req : window time width : 1, 0
** (lttv.real:26191): DEBUG: req : window_end : 1, 0
** (lttv.real:26191): DEBUG: x is : 0, x+width is : 642
** (lttv.real:26191): DEBUG: AFTER EXPOSE
** (lttv.real:26191): DEBUG: ruler expose event
** INFO: Clone : use the same traceset

** (lttv.real:26191): DEBUG: construct_main_window()
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** INFO: h_guicontrolflow, 0x8f482f0
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** Message: statistics viewer : background computation data ready.
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** INFO: There are now : 2 windows

** (lttv.real:26191): DEBUG: size allocate 0x909ebd8 : last_num_visible_events : 1
** (lttv.real:26191): DEBUG: num_visible_events : 7, value 0.000000
** (lttv.real:26191): DEBUG: get_events : SCROLL_NONE
** INFO: Entering seek_time_closest for time 0.0
** INFO: NOT Calling restore
** INFO: Entering seek_time_closest for time 4294967295.1000000000
** INFO: NOT Calling restore
** (lttv.real:26191): DEBUG: drawing configure event
** (lttv.real:26191): DEBUG: New alloc draw size : 642 by 176
** (lttv.real:26191): DEBUG: req : window start_time : 0, 0
** (lttv.real:26191): DEBUG: req : window time width : 1, 0
** (lttv.real:26191): DEBUG: req : window_end : 1, 0
** (lttv.real:26191): DEBUG: x is : 0, x+width is : 642
** (lttv.real:26191): DEBUG: AFTER EXPOSE
** (lttv.real:26191): DEBUG: ruler expose event
** (lttv.real:26191): DEBUG: lttv_menus_destroy()
** (lttv.real:26191): DEBUG: lttv_toolbars_destroy
** (lttv.real:26191): DEBUG: attribute_finalize()
** INFO: There are now : 1 windows

** (lttv.real:26191): DEBUG: lttv_menus_destroy()
** (lttv.real:26191): DEBUG: lttv_toolbars_destroy
** (lttv.real:26191): DEBUG: attribute_finalize()
** INFO: There are now : 0 windows

** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** (lttv.real:26191): DEBUG: attribute_finalize()
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** (lttv.real:26191): DEBUG: attribute_finalize()
** INFO: Unload library builtin: module print used
** INFO: Module module: destroy()
** INFO: Destroy module.c
** INFO: Unload library builtin: locked loaded
** INFO: Unload library builtin: locked loaded
** INFO: Module guievents: destroy()
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** (lttv.real:26191): DEBUG: lttv_hooks_destroy()
** INFO: Unload library guievents: locked loaded
** INFO: Module print: destroy()
** INFO: Unload library builtin: locked loaded
** INFO: Unload library guievents: locked loaded
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library guievents: module lttvwindow used
** INFO: Module guifilter: destroy()
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library guifilter: locked loaded
** INFO: Unload library guifilter: close the GModule
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library guievents: module lttvwindow used
** INFO: Module guicontrolflow: destroy()
** INFO: GUI Control Flow Viewer destroy()
** INFO: Walk destroy GUI Control Flow Viewer
** INFO: CFV.c : guicontrolflow_destructor_full, 0x8f96418
** (lttv.real:26191): DEBUG: processlist_destroy 0x8f97170
** (lttv.real:26191): DEBUG: processlist_destroy end
** INFO: drawing_destroy 0x8f8a228
** INFO: drawing_destroy end
** INFO: CFV.c : guicontrolflow_destructor, 0x8f96418
** INFO: 0xb73b7a50, 0x8f96418, 0x8e58838
** INFO: widget still exists
** INFO: CFV.c : guicontrolflow_destructor end, 0x8f96430
** INFO: Walk destroy GUI Control Flow Viewer
** INFO: CFV.c : guicontrolflow_destructor_full, 0x8f964c8
** (lttv.real:26191): DEBUG: processlist_destroy 0x90a6468
** (lttv.real:26191): DEBUG: processlist_destroy end
** INFO: drawing_destroy 0x90a5778
** INFO: drawing_destroy end
** INFO: CFV.c : guicontrolflow_destructor, 0x8f964c8
** INFO: 0xb73b7a50, 0x8f964c8, 0x8f482f0
** INFO: widget still exists
** INFO: CFV.c : guicontrolflow_destructor end, 0x8f964e0
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library guicontrolflow: locked loaded
** INFO: Unload library guicontrolflow: close the GModule
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library guievents: module lttvwindow used
** INFO: Module resourceview: destroy()
** INFO: GUI resource viewer destroy()
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library resourceview: locked loaded
** INFO: Unload library resourceview: close the GModule
** INFO: Unload library guievents: module lttvwindow used
** INFO: Unload library guievents: module lttvwindow used
** INFO: Module guistatistics: destroy()
** (lttv.real:26191): DEBUG: CFV.c : statistic_destroy_walk, 0x8fa32c0
###FREEZE HERE###
^C
Program received signal SIGINT, Interrupt.
[Switching to Thread 0xb7c396b0 (LWP 26191)]
0xb7dd8efb in g_object_newv () from /usr/lib/libgobject-2.0.so.0
(gdb) bt
#0  0xb7dd8efb in g_object_newv () from /usr/lib/libgobject-2.0.so.0
#1  0xb7dd94ba in g_object_new_valist () from /usr/lib/libgobject-2.0.so.0
#2  0xb7dd960e in g_object_new () from /usr/lib/libgobject-2.0.so.0
#3  0xb790011d in gtk_adjustment_new () from /usr/lib/libgtk-x11-2.0.so.0
#4  0xb7ab7726 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#5  0x00000000 in ?? ()


In both cases, "CFV.c : statistic_destroy_walk" is the last message.

---
Atsushi Nemoto




More information about the lttng-dev mailing list