After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 704237 - glimagesink: Using sink->display after it was removed
glimagesink: Using sink->display after it was removed
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-gl
git master
Other Linux
: Normal major
: 1.3.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-07-15 11:22 UTC by Sebastian Dröge (slomo)
Modified: 2014-02-21 08:34 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Sebastian Dröge (slomo) 2013-07-15 11:22:46 UTC
Pipeline: gst-launch-1.0 videotestsrc ! "video/x-raw,format=RGB" ! glimagesink

Stopped via ctrl+c often gives the following crash. Which happens because the sink went PAUSED->READY somewhere in the middle of gst_glimage_sink_on_draw(), and the state change function sets sink->display to NULL.

Thread 4 (Thread 0x7f6d9b421700 (LWP 12853))

  • #0 nanosleep
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 g_usleep
    at /tmp/buildd/glib2.0-2.36.3/./glib/gtimer.c line 261
  • #2 fault_spin
    at gst-launch.c line 112
  • #3 fault_handler_sighandler
    at gst-launch.c line 93
  • #4 <signal handler called>
  • #5 gst_glimage_sink_on_draw
    at gstglimagesink.c line 970
  • #6 gst_gl_window_x11_handle_event
    at gstglwindow_x11.c line 666
  • #7 x11_event_source_dispatch
    at x11_event_source.c line 69
  • #8 g_main_dispatch
    at /tmp/buildd/glib2.0-2.36.3/./glib/gmain.c line 3054
  • #9 g_main_context_dispatch
    at /tmp/buildd/glib2.0-2.36.3/./glib/gmain.c line 3630
  • #10 g_main_context_iterate
    at /tmp/buildd/glib2.0-2.36.3/./glib/gmain.c line 3701
  • #11 g_main_loop_run
    at /tmp/buildd/glib2.0-2.36.3/./glib/gmain.c line 3895
  • #12 gst_gl_window_run
    at gstglwindow.c line 282
  • #13 _gst_gl_window_thread_create_context
    at gstglwindow.c line 725
  • #14 g_thread_proxy
    at /tmp/buildd/glib2.0-2.36.3/./glib/gthread.c line 798
  • #15 start_thread
    at pthread_create.c line 311
  • #16 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Comment 1 Matthew Waters (ystreet00) 2014-02-21 04:52:51 UTC
This should be fixed by

commit dde32ba74fe7aa360c39bd836d9f55ce236ae5e9
Author: Julien Isorce <julien.isorce@collabora.co.uk>
Date:   Wed Aug 28 10:32:29 2013 +0100

    glimagesink: avoid to draw texture while releasing stored buffer
    
    Spoted by generic/cube example with ClientDrawCallback set to
    returning TRUE (it means drawing as fast as possible)

commit be9d8a67278f42aca1332a9a1fc717e49e417bac
Author: Julien Isorce <julien.isorce@collabora.co.uk>
Date:   Wed Aug 28 10:07:24 2013 +0100

    glimagesink: fix asynchrone drawing
    
    Simplify gst_glimage_sink_redisplay which is there
    only to ask the window for a redraw.
    
    Put a lock to make sure we are not realeasing
    the stored buffer while still drawing the corresponding
    texture