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 634815 - [xvimagesink] Catch and handle X11 errors and don't pass them to GDK/etc
[xvimagesink] Catch and handle X11 errors and don't pass them to GDK/etc
Status: RESOLVED WONTFIX
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
0.10.30
Other Linux
: Normal critical
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2010-11-14 12:27 UTC by Julian Sikorski
Modified: 2013-12-04 21:14 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
backtrace (22.71 KB, text/plain)
2010-11-14 12:27 UTC, Julian Sikorski
Details

Description Julian Sikorski 2010-11-14 12:27:28 UTC
Created attachment 174429 [details]
backtrace

This was originally reported to Red Hat bugzilla:
https://bugzilla.redhat.com/show_bug.cgi?id=562238
The problem is that when the machine is suspended while playing a movie, totem will crash upon resume. The fedora bug contains the abrt backtrace, I am attaching one obtained with pure gdb. There was an error about X sync stuff, so if you cannot reproduce the issue please tell me how to solve that problem.
The issue happens with audio files with visualisation enabled, but with visualisation off playing the audio file becomes resume-safe.
Comment 1 Philip Withnall 2010-11-14 15:28:42 UTC
Looks like a GStreamer bug with the visualisations, then. What GStreamer core and plugins versions do you have?

Pasting the stacktrace inline so it's searchable:

  • #0 raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 64
  • #1 abort
    at abort.c line 92
  • #2 g_logv
    at gmessages.c line 557
  • #3 g_log
    at gmessages.c line 577
  • #4 gdk_x_error
    at gdkmain-x11.c line 466
  • #5 _XError
    at XlibInt.c line 3105
  • #6 handle_error
    at xcb_io.c line 166
  • #7 handle_response
    at xcb_io.c line 265
  • #8 _XReply
    at xcb_io.c line 554
  • #9 XSync
    at Sync.c line 46
  • #10 gst_xvimagesink_xvimage_put
    at xvimagesink.c line 866
  • #11 gst_xvimagesink_show_frame
    at xvimagesink.c line 2367
  • #12 gst_base_sink_render_object
    at gstbasesink.c line 2820
  • #13 gst_base_sink_queue_object_unlocked
    at gstbasesink.c line 3098
  • #14 gst_base_sink_chain_unlocked
    at gstbasesink.c line 3472
  • #15 gst_base_sink_chain_main
    at gstbasesink.c line 3510
  • #16 gst_pad_chain_data_unchecked
    at gstpad.c line 4176
  • #17 gst_pad_push_data
    at gstpad.c line 4405
  • #18 gst_pad_chain_data_unchecked
    at gstpad.c line 4176
  • #19 gst_pad_push_data
    at gstpad.c line 4405
  • #20 gst_pad_chain_data_unchecked
    at gstpad.c line 4176
  • #21 gst_pad_push_data
    at gstpad.c line 4405
  • #22 gst_pad_chain_data_unchecked
    at gstpad.c line 4176
  • #23 gst_pad_push_data
    at gstpad.c line 4405
  • #24 gst_base_transform_chain
    at gstbasetransform.c line 2190
  • #25 gst_pad_chain_data_unchecked
    at gstpad.c line 4176
  • #26 gst_pad_push_data
    at gstpad.c line 4405
  • #27 gst_base_transform_chain
    at gstbasetransform.c line 2190
  • #28 gst_pad_chain_data_unchecked
    at gstpad.c line 4176
  • #29 gst_pad_push_data
    at gstpad.c line 4405
  • #30 gst_queue_push_one
    at gstqueue.c line 1083
  • #31 gst_queue_loop
    at gstqueue.c line 1185
  • #32 gst_task_func
    at gsttask.c line 271
  • #33 g_thread_pool_thread_proxy
    at gthreadpool.c line 319
  • #34 g_thread_create_proxy
    at gthread.c line 1897
  • #35 start_thread
    at pthread_create.c line 301
  • #36 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 115
  • #0 raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 64
  • #1 abort
    at abort.c line 92
  • #2 g_logv
    at gmessages.c line 557
  • #3 g_log
    at gmessages.c line 577
  • #4 gdk_x_error
    at gdkmain-x11.c line 466
  • #5 _XError
    at XlibInt.c line 3105
  • #6 handle_error
    at xcb_io.c line 166
  • #7 handle_response
    at xcb_io.c line 265
  • #8 _XReply
    at xcb_io.c line 554
  • #9 XSync
    at Sync.c line 46
  • #10 gst_xvimagesink_xvimage_put
    at xvimagesink.c line 866
  • #11 gst_xvimagesink_show_frame
    at xvimagesink.c line 2367
  • #12 gst_base_sink_render_object
    at gstbasesink.c line 2820
  • #13 gst_base_sink_queue_object_unlocked
    at gstbasesink.c line 3098
  • #14 gst_base_sink_chain_unlocked
    at gstbasesink.c line 3472
  • #15 gst_base_sink_chain_main
    at gstbasesink.c line 3510
  • #16 gst_pad_chain_data_unchecked
    at gstpad.c line 4176
  • #17 gst_pad_push_data
    at gstpad.c line 4405
  • #18 gst_pad_chain_data_unchecked
    at gstpad.c line 4176
  • #19 gst_pad_push_data
    at gstpad.c line 4405
  • #20 gst_pad_chain_data_unchecked
    at gstpad.c line 4176
  • #21 gst_pad_push_data
    at gstpad.c line 4405
  • #22 gst_pad_chain_data_unchecked
    at gstpad.c line 4176
  • #23 gst_pad_push_data
    at gstpad.c line 4405
  • #24 gst_base_transform_chain
    at gstbasetransform.c line 2190
  • #25 gst_pad_chain_data_unchecked
    at gstpad.c line 4176
  • #26 gst_pad_push_data
    at gstpad.c line 4405
  • #27 gst_base_transform_chain
    at gstbasetransform.c line 2190
  • #28 gst_pad_chain_data_unchecked
    at gstpad.c line 4176
  • #29 gst_pad_push_data
    at gstpad.c line 4405
  • #30 gst_queue_push_one
    at gstqueue.c line 1083
  • #31 gst_queue_loop
    at gstqueue.c line 1185
  • #32 gst_task_func
    at gsttask.c line 271
  • #33 g_thread_pool_thread_proxy
    at gthreadpool.c line 319
  • #34 g_thread_create_proxy
    at gthread.c line 1897
  • #35 start_thread
    at pthread_create.c line 301
  • #36 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 115

Comment 2 Julian Sikorski 2010-11-14 15:33:36 UTC
Not only visualisations since it crashes on movies as well. When it comes to versions, I have versions from up-to-date Fedora 14 + RPM Fusion. I'll be more specific when I get home.
Comment 3 Julian Sikorski 2010-11-14 18:58:10 UTC
$ rpm -qa | grep gstreamer | sort
bluez-gstreamer-4.77-1.fc14.x86_64
gstreamer-0.10.30-1.fc14.i686
gstreamer-0.10.30-1.fc14.x86_64
gstreamer-debuginfo-0.10.30-1.fc14.x86_64
gstreamer-devel-0.10.30-1.fc14.x86_64
gstreamer-ffmpeg-0.10.11-1.fc14.x86_64
gstreamermm-0.10.8-1.fc14.x86_64
gstreamer-plugins-bad-0.10.20-2.fc14.x86_64
gstreamer-plugins-bad-free-0.10.20-3.fc14.x86_64
gstreamer-plugins-bad-free-extras-0.10.20-3.fc14.x86_64
gstreamer-plugins-bad-nonfree-0.10.18-1.fc13.x86_64
gstreamer-plugins-base-0.10.30-2.fc14.i686
gstreamer-plugins-base-0.10.30-2.fc14.x86_64
gstreamer-plugins-base-debuginfo-0.10.30-2.fc14.x86_64
gstreamer-plugins-base-devel-0.10.30-2.fc14.x86_64
gstreamer-plugins-good-0.10.25-1.fc14.x86_64
gstreamer-plugins-ugly-0.10.16-2.fc14.x86_64
gstreamer-python-0.10.19-1.fc14.x86_64
gstreamer-rtsp-0.10.5-2.fc14.x86_64
gstreamer-tools-0.10.30-1.fc14.x86_64
PackageKit-gstreamer-plugin-0.6.9-4.fc14.x86_64
Comment 4 Julian Sikorski 2010-11-14 22:50:59 UTC
OK, this is strange. If I ask to break at gdk_x_error and run totem with --sync [1], it survives the resume. The --sync alone is not enough.

[1] http://wiki.debian.org/HowToGetABacktrace#DebuggingXErrors
Comment 5 Julian Sikorski 2010-11-24 21:32:53 UTC
I just realised you don't actually need to sleep, it is enough to switch to tty2 (which I have running in vga=0x318) and back.
Comment 6 Sebastian Dröge (slomo) 2010-12-12 15:15:15 UTC
Does this also happen with non-gstreamer based movie players like VLC or Xine when using XV?
Comment 7 Julian Sikorski 2010-12-12 15:25:15 UTC
VLC with XVideo (XCB) output survives both vt switch and resume.
Ditto mplayer, but it shows the following in the console (many times):
X11 error: BadAlloc (insufficient resources for operation)
Comment 8 Sebastian Dröge (slomo) 2010-12-12 15:31:54 UTC
Ok, so xvimagesink should probably catch X11 errors like BadAlloc and somehow and don't get them handled by the GDK (or whatever) X11 error handlers
Comment 9 David Schleef 2010-12-13 01:44:36 UTC
Oh joy.  This is the "gdk steals our X errors" bug.  There's not much we can do about this until we switch to xcb.  Xlib only has one global error handler per process, which obviously goes to gdk.  We can only try really hard to not generate errors.
Comment 10 Edward Hervey 2011-05-16 18:47:54 UTC
So... what stops us from switching to xcb ?
Comment 11 Tobias Mueller 2011-10-16 04:46:06 UTC
Reopening as I don't see any open non developer issue
Comment 12 Reynaldo H. Verdejo Pinochet 2013-11-02 20:03:34 UTC
From a recent discussion on IRC about this, I understand the switch to XCB
will likely never happen (not even desired from what I understood). Shall
we close this one as a WONTFIX ?
Comment 13 Olivier Crête 2013-12-04 21:14:41 UTC
Let's wontfix this. The most important X apps (Empathy, Totem) used Clutter/OpenGL now anyway.