[Xfce-bugs] [Bug 15792] New: Crash with SIGSEGV in libgtk-3.so

bugzilla-daemon at xfce.org bugzilla-daemon at xfce.org
Wed Aug 7 13:00:59 CEST 2019


https://bugzilla.xfce.org/show_bug.cgi?id=15792

            Bug ID: 15792
           Summary: Crash with SIGSEGV in libgtk-3.so
    Classification: Apps
           Product: Xfce4-screenshooter
           Version: unspecified
          Hardware: Other
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Medium
         Component: General
          Assignee: xfce-bugs at xfce.org
          Reporter: pmenzel+bugzilla.xfce.org at molgen.mpg.de
  Target Milestone: ---

After upgrading some GTK+, gtkmm, and GLib components, xfce4-screenshooter
crashes now in `libgtk-3.so.0.2404.6`. GTK+ upstream says, it is a dangling
GtkWidget * pointer that's been freed elsewhere [1]. It only happens when using
*Select a region*.

Rebuilding xfce4-screenshooter from git does not help. With `./configure
--enable-debug=full` the GDB output looks like below.

(gdb) run
Starting program: /dev/shm/xfce4-screenshooter/src/xfce4-screenshooter 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
TRACE[lib/screenshooter-utils.c:130] screenshooter_read_rc_file(): Open the rc
file
TRACE[lib/screenshooter-utils.c:136] screenshooter_read_rc_file(): Read the
entries
TRACE[lib/screenshooter-utils.c:158] screenshooter_read_rc_file(): Close the rc
file
TRACE[lib/screenshooter-utils.c:165] screenshooter_read_rc_file(): Set the
values of the struct
[New Thread 0x7fffeb035700 (LWP 14261)]
[New Thread 0x7fffea834700 (LWP 14262)]
[New Thread 0x7fffe8f82700 (LWP 14263)]
TRACE[lib/screenshooter-capture.c:1394] screenshooter_capture_screenshot(): Let
the user select the region to screenshot
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.
TRACE[lib/screenshooter-capture.c:569] cb_button_pressed(): Left button pressed
TRACE[lib/screenshooter-capture.c:705] cb_motion_notify(): Mouse is moving with
left button pressed
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.
TRACE[lib/screenshooter-capture.c:705] cb_motion_notify(): Mouse is moving with
left button pressed
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.
TRACE[lib/screenshooter-capture.c:705] cb_motion_notify(): Mouse is moving with
left button pressed
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.
TRACE[lib/screenshooter-capture.c:705] cb_motion_notify(): Mouse is moving with
left button pressed
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.
TRACE[lib/screenshooter-capture.c:705] cb_motion_notify(): Mouse is moving with
left button pressed
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.
TRACE[lib/screenshooter-capture.c:705] cb_motion_notify(): Mouse is moving with
left button pressed
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.
TRACE[lib/screenshooter-capture.c:705] cb_motion_notify(): Mouse is moving with
left button pressed
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.
TRACE[lib/screenshooter-capture.c:705] cb_motion_notify(): Mouse is moving with
left button pressed
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.
TRACE[lib/screenshooter-capture.c:705] cb_motion_notify(): Mouse is moving with
left button pressed
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.
TRACE[lib/screenshooter-capture.c:705] cb_motion_notify(): Mouse is moving with
left button pressed
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.
TRACE[lib/screenshooter-capture.c:705] cb_motion_notify(): Mouse is moving with
left button pressed
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.
TRACE[lib/screenshooter-capture.c:705] cb_motion_notify(): Mouse is moving with
left button pressed
TRACE[lib/screenshooter-capture.c:506] cb_draw(): Draw event received.

Thread 1 "xfce4-screensho" received signal SIGSEGV, Segmentation fault.
0x00007ffff6e74f16 in gtk_widget_destroy (widget=0x804270)
    at /dev/shm/bee-root/gtk3/gtk3-3.24.10-0/source/gtk/gtkwidget.c:4770
4770      g_return_if_fail (GTK_IS_WIDGET (widget));
(gdb) set pagination off
(gdb) l
4765     * See also: gtk_container_remove()
4766     */
4767    void
4768    gtk_widget_destroy (GtkWidget *widget)
4769    {
4770      g_return_if_fail (GTK_IS_WIDGET (widget));
4771    
4772      if (!widget->priv->in_destruction)
4773        g_object_run_dispose (G_OBJECT (widget));
4774    }
(gdb) bt
#0  0x00007ffff6e74f16 in gtk_widget_destroy (widget=0x804270) at
/dev/shm/bee-root/gtk3/gtk3-3.24.10-0/source/gtk/gtkwidget.c:4770
#1  0x000000000040c951 in get_rectangle_screenshot_composited (delay=4) at
lib/screenshooter-capture.c:963
#2  0x000000000040dbc9 in screenshooter_capture_screenshot (region=3, delay=4,
show_mouse=1, plugin=0) at lib/screenshooter-capture.c:1398
#3  0x000000000040a49f in take_screenshot_idle (sd=0x431600) at
lib/screenshooter-actions.c:136
#4  0x00007ffff4a5ff25 in g_main_dispatch (context=0x475280) at
../source/glib/gmain.c:3189
#5  g_main_context_dispatch (context=context at entry=0x475280) at
../source/glib/gmain.c:3854
#6  0x00007ffff4a602c8 in g_main_context_iterate (context=0x475280,
block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>) at
../source/glib/gmain.c:3927
#7  0x00007ffff4a605d2 in g_main_loop_run (loop=0x653ae0) at
../source/glib/gmain.c:4123
#8  0x00007ffff6d40515 in gtk_main () at
/dev/shm/bee-root/gtk3/gtk3-3.24.10-0/source/gtk/gtkmain.c:1323
#9  0x000000000040a01b in main (argc=1, argv=0x7fffffffe7d8) at src/main.c:337
(gdb) frame 1
#1  0x000000000040c951 in get_rectangle_screenshot_composited (delay=4) at
lib/screenshooter-capture.c:963
963       gtk_widget_destroy (rbdata.size_window);
(gdb) l
958                                                  rbdata.rectangle.width,
959                                                  rbdata.rectangle.height,
960                                                  delay);
961     
962       cleanup:
963       gtk_widget_destroy (rbdata.size_window);
964       gdk_seat_ungrab (seat);
965       gdk_display_flush (display);
966     
967       return screenshot;
(gdb) bt f
#0  0x00007ffff6e74f16 in gtk_widget_destroy (widget=0x804270) at
/dev/shm/bee-root/gtk3/gtk3-3.24.10-0/source/gtk/gtkwidget.c:4770
        __inst = 0x804270
        __t = 4724816
        __r = <optimized out>
        _g_boolean_var_ = <optimized out>
        __func__ = "gtk_widget_destroy"
#1  0x000000000040c951 in get_rectangle_screenshot_composited (delay=4) at
lib/screenshooter-capture.c:963
        window = 0x773940
        rbdata = {left_pressed = 1, rubber_banding = 1, cancelled = 0,
move_rectangle = 0, anchor = 0, x = 862, y = 445, x_root = 862, y_root = 445,
rectangle = {x = 862, y = 445, width = 415, height = 181}, size_window =
0x804270, size_label = 0x44f8d0}
        screenshot = 0x781980
        res = GDK_GRAB_SUCCESS
        seat = 0x462680
        xhair_cursor = 0x560d40
        display = 0x44f0e0
        screen_geometry = {x = 10, y = 0, width = 1920, height = 1080}
#2  0x000000000040dbc9 in screenshooter_capture_screenshot (region=3, delay=4,
show_mouse=1, plugin=0) at lib/screenshooter-capture.c:1398
        screenshot = 0x0
        window = 0x0
        screen = 0x456020
        display = 0x44f0e0
        border = 8337664
        needs_unref = 1
        __func__ = "screenshooter_capture_screenshot"
#3  0x000000000040a49f in take_screenshot_idle (sd=0x431600) at
lib/screenshooter-actions.c:136
No locals.
#4  0x00007ffff4a5ff25 in g_main_dispatch (context=0x475280) at
../source/glib/gmain.c:3189
        dispatch = 0x7ffff4a5c970 <g_idle_dispatch>
        prev_source = 0x0
        was_in_call = 0
        user_data = 0x431600
        callback = 0x40a471 <take_screenshot_idle>
        cb_funcs = 0x7ffff4d2d920 <g_source_callback_funcs>
        cb_data = 0x7f3820
        need_destroy = <optimized out>
        source = 0x5c2810
        current = 0x4d57a0
        i = 1
        current = <optimized out>
        i = <optimized out>
        source = <optimized out>
        _g_boolean_var_ = <optimized out>
        was_in_call = <optimized out>
        user_data = <optimized out>
        callback = <optimized out>
        cb_funcs = <optimized out>
        cb_data = <optimized out>
        need_destroy = <optimized out>
        dispatch = <optimized out>
        prev_source = <optimized out>
        _g_boolean_var_ = <optimized out>
#5  g_main_context_dispatch (context=context at entry=0x475280) at
../source/glib/gmain.c:3854
No locals.
#6  0x00007ffff4a602c8 in g_main_context_iterate (context=0x475280,
block=block at entry=1, dispatch=dispatch at entry=1, self=<optimized out>) at
../source/glib/gmain.c:3927
        max_priority = 200
        timeout = 0
        some_ready = 1
        nfds = <optimized out>
        allocated_nfds = 3
        fds = 0x79af40
#7  0x00007ffff4a605d2 in g_main_loop_run (loop=0x653ae0) at
../source/glib/gmain.c:4123
        self = <optimized out>
        __FUNCTION__ = "g_main_loop_run"
#8  0x00007ffff6d40515 in gtk_main () at
/dev/shm/bee-root/gtk3/gtk3-3.24.10-0/source/gtk/gtkmain.c:1323
        loop = 0x653ae0
#9  0x000000000040a01b in main (argc=1, argv=0x7fffffffe7d8) at src/main.c:337
        cli_error = 0x0
        default_save_dir = 0x4bcd20
        rc_file = 0x4b57e0 "/home/pmenzel/.config/xfce4/xfce4-screenshooter"
        conflict_error = 0x4172b8 "Conflicting options: --%s and --%s cannot be
used at the same time.\n"
        ignore_error = 0x417318 "The --%s option is only used when
--fullscreen, --window or --region is given. It will be ignored.\n"
        sd = 0x431600
        __func__ = "main"

[1]: https://gitlab.gnome.org/GNOME/gtk/issues/2083

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the Xfce-bugs mailing list