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 762087 - CD playing with cross fading on crashes rhythmbox
CD playing with cross fading on crashes rhythmbox
Status: RESOLVED FIXED
Product: rhythmbox
Classification: Other
Component: Removable Media
3.3
Other Linux
: Normal normal
: ---
Assigned To: RhythmBox Maintainers
RhythmBox Maintainers
Depends on:
Blocks:
 
 
Reported: 2016-02-15 16:06 UTC by Sebastien Bacher
Modified: 2016-03-22 09:38 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Possible fix for segfault. (1.14 KB, patch)
2016-03-21 20:00 UTC, Tasos Sahanidis
none Details | Review
this should work a bit better (954 bytes, patch)
2016-03-21 22:07 UTC, Jonathan Matthew
none Details | Review

Description Sebastien Bacher 2016-02-15 16:06:33 UTC
The bug has been reported on https://launchpad.net/bugs/1545764

That's using rhythmbox 3.3 and gstreamer 1.7

Those warnings are displayed before the segfault

"Warning: invalid cast from 'GstPad' to 'GstGhostPad'

(rhythmbox:22834): GStreamer-CRITICAL **: gst_ghost_pad_get_target: assertion 'GST_IS_GHOST_PAD (gpad)' failed

(rhythmbox:22834): GStreamer-CRITICAL **: gst_pad_add_probe: assertion 'GST_IS_PAD (pad)' failed

(rhythmbox:22834): GStreamer-CRITICAL **: gst_object_get_parent: assertion 'GST_IS_OBJECT (object)' failed"

backtrace

"#0  0xb7ee5f6a in add_stream_uri_tag (stream=0xac941038, pad=0xac92a9c8)
    at rb-player-gst-xfade.c:2082
  • #1 stream_pad_added_cb
    at rb-player-gst-xfade.c line 2122
  • #2 g_cclosure_marshal_VOID__OBJECTv
    at /build/glib2.0-Q50eE3/glib2.0-2.47.5/./gobject/gmarshal.c line 2102
  • #3 _g_closure_invoke_va
    at /build/glib2.0-Q50eE3/glib2.0-2.47.5/./gobject/gclosure.c line 867
  • #4 g_signal_emit_valist
    at /build/glib2.0-Q50eE3/glib2.0-2.47.5/./gobject/gsignal.c line 3294
  • #5 g_signal_emit
    at /build/glib2.0-Q50eE3/glib2.0-2.47.5/./gobject/gsignal.c line 3441
  • #6 gst_element_add_pad
    at gstelement.c line 704
  • #7 ??
    from /usr/lib/i386-linux-gnu/gstreamer-1.0/libgstplayback.so
  • #8 ??
    from /usr/lib/i386-linux-gnu/gstreamer-1.0/libgstplayback.so
  • #9 gst_element_change_state
    at gstelement.c line 2626
  • #10 gst_element_set_state_func
    at gstelement.c line 2580

Comment 1 Tasos Sahanidis 2016-03-21 20:00:12 UTC
Created attachment 324503 [details] [review]
Possible fix for segfault.

I am also affected by this issue.

The issue appears to be caused by the line
rb_debug ("not setting stream uri tag for %s", GST_OBJECT_NAME (e));
in rb-player-gst-xfade.c

Specifically, using gdb it can be seen that `e` is 0x0 during the time of the segfault.

(gdb) p e
$1 = (GstElement *) 0x0

The attached patch adds a statement to check the state of `e`, and modifies the rb_debug string accordingly so that no segfault occurs.
Comment 2 Jonathan Matthew 2016-03-21 21:06:15 UTC
If e is NULL there, something has gone wrong earlier in the function, so it would be better to handle the original failure better rather than ignoring it there.
Comment 3 Jonathan Matthew 2016-03-21 22:07:13 UTC
Created attachment 324508 [details] [review]
this should work a bit better

Does this also stop it crashing?
Comment 4 Tasos Sahanidis 2016-03-21 22:24:19 UTC
Apologies, I should have spent more time on this.
Your solution is indeed much better, and it also fixes the crashes for me.

Thanks!
Comment 5 Jonathan Matthew 2016-03-22 09:38:50 UTC
pushed as commit 1ccbbc3.  thanks for testing - I can't easily test audio cd playback any more.