[Bug 670321] New: playbin2 hangs and crashes in notify_source_cb() when controlled by rhythmbox

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri Feb 17 12:52:00 PST 2012


https://bugzilla.gnome.org/show_bug.cgi?id=670321
  GStreamer | gst-plugins-base | 0.10.x

           Summary: playbin2 hangs and crashes in notify_source_cb() when
                    controlled by rhythmbox
    Classification: Platform
           Product: GStreamer
           Version: 0.10.x
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-base
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: thomas at m3y3r.de
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=207904)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=207904)
debugger session of the crash

Hi,

this crash happens very often to me in Fedora 16. See also fedora's bugzilla:
https://bugzilla.redhat.com/show_bug.cgi?id=702778.

I just did a fresh compile of gstreamer and gst-plugins-base from the git tree
and checked out the resp. 0.10 branch on both.

here is the result of the crash

Stack trace is:

Thread [1] 24264 [core: 0] (Suspended : Signal : SIGINT:Interrupt)    
    __kernel_vsyscall() at 0xf7785430    
    raise() at 0x43ed5b4e    
    rb_debug_stop_in_debugger() at rb-debug.c:282 0x41554149    
    log_handler() at rb-debug.c:299 0x415541b5    
    g_logv() at gmessages.c:545 0x4753726f    
    g_log() at gmessages.c:591 0x475375e4    
    g_return_if_fail_warning() at gmessages.c:600 0x4753784e    
    g_object_get() at gobject.c:1.881 0x47332bd0    
    notify_source_cb() at gstplaybin2.c:3.437 0xeb3658f1    
    g_cclosure_marshal_VOID__PARAM() at gmarshal.c:539 0x4732c5cb    
    g_closure_invoke() at gclosure.c:774 0x4732a645    
    signal_emit_unlocked_R() at gsignal.c:3.272 0x4733d860    
    g_signal_emit_valist() at gsignal.c:3.003 0x473462ff    
    g_signal_emit() at gsignal.c:3.060 0x47346464    
    g_object_dispatch_properties_changed() at gobject.c:925 0x4732d837    
    gst_object_dispatch_properties_changed() at gstobject.c:530 0xf75a4f92    
    g_object_notify_dispatcher() at gobject.c:331 0x4732ccb0    
    g_object_notify_queue_thaw() at gobjectnotifyqueue.c:132 0x4732fa62    
    g_object_notify_by_spec_internal() at gobject.c:983 0x4732fa62    
    g_object_notify() at gobject.c:1.024 0x4732fa62    
    setup_source() at gsturidecodebin.c:2.015 0xea29fc4a    
    gst_uri_decode_bin_change_state() at gsturidecodebin.c:2.493 0xea29fc4a    
    gst_element_change_state() at gstelement.c:2.761 0xf75c2a9b    
    gst_element_set_state_func() at gstelement.c:2.717 0xf75c34c5    
    gst_element_set_state() at gstelement.c:2.618 0xf75c27d1    
    gst_bin_element_set_state() at gstbin.c:2.209 0xf75adc0e    
    gst_bin_change_state_func() at gstbin.c:2.518 0xf75adc0e    
    gst_pipeline_change_state() at gstpipeline.c:482 0xf75e6364    
    gst_play_bin_change_state() at gstplaybin2.c:3.936 0xeb367d99    
    gst_element_change_state() at gstelement.c:2.761 0xf75c2a9b    
    gst_element_set_state_func() at gstelement.c:2.717 0xf75c34c5    
    gst_element_set_state() at gstelement.c:2.618 0xf75c27d1    
    start_state_change() at rb-player-gst.c:382 0x41552092    
    state_change_finished() at rb-player-gst.c:411 0x4155225b    
    impl_play() at rb-player-gst.c:849 0x41552cbd    
    rb_player_play() at rb-player.c:434 0x415433bc    
    rb_shell_player_open_location() at rb-shell-player.c:1.654 0x414c42cc    
    rb_shell_player_set_playing_entry() at rb-shell-player.c:1.769 0x414c5fa4   
    rb_shell_player_property_row_activated_cb() at rb-shell-player.c:2.778
0x414c9297    
    g_cclosure_marshal_VOID__STRING() at gmarshal.c:504 0x4732c50b    
    g_closure_invoke() at gclosure.c:774 0x4732a645    
    signal_emit_unlocked_R() at gsignal.c:3.272 0x4733d860    
    g_signal_emit_valist() at gsignal.c:3.003 0x473462ff    
    g_signal_emit() at gsignal.c:3.060 0x47346464    
    rb_property_view_row_activated_cb() at rb-property-view.c:737 0x415094a5    
    _gtk_marshal_VOID__BOXED_OBJECT() at gtkmarshalers.c:1.386 0x4115c1b2    
    g_closure_invoke() at gclosure.c:774 0x4732a645    
    signal_emit_unlocked_R() at gsignal.c:3.272 0x4733d860    
    g_signal_emit_valist() at gsignal.c:3.003 0x473462ff    
    g_signal_emit() at gsignal.c:3.060 0x47346464    
    gtk_tree_view_row_activated() at gtktreeview.c:12.464 0x41289c4a    
    gtk_tree_view_button_press() at gtktreeview.c:3.166 0x4128f68c    
    _gtk_marshal_BOOLEAN__BOXED() at gtkmarshalers.c:85 0x4115a3ba    
    g_type_class_meta_marshal() at gclosure.c:885 0x4732903e    
    g_closure_invoke() at gclosure.c:774 0x4732a645    
    signal_emit_unlocked_R() at gsignal.c:3.310 0x4733d6a8    
    g_signal_emit_valist() at gsignal.c:3.013 0x47346118    
    g_signal_emit() at gsignal.c:3.060 0x47346464    
    gtk_widget_event_internal() at gtkwidget.c:6.132 0x412aac53    
    gtk_propagate_event() at gtkmain.c:2.614 0x41159a62    
    rb_tree_dnd_button_release_event_cb() at rb-tree-dnd.c:383 0x4155edfe    
    _gtk_marshal_BOOLEAN__BOXED() at gtkmarshalers.c:85 0x4115a3ba    
    g_closure_invoke() at gclosure.c:774 0x4732a645    
    signal_emit_unlocked_R() at gsignal.c:3.272 0x4733d860    
    g_signal_emit_valist() at gsignal.c:3.013 0x47346118    
    g_signal_emit() at gsignal.c:3.060 0x47346464    
    gtk_widget_event_internal() at gtkwidget.c:6.132 0x412aac53    
    gtk_propagate_event() at gtkmain.c:2.614 0x41159a62    
    gtk_main_do_event() at gtkmain.c:1.889 0x41159ec8    
    _gdk_event_emit() at gdkevents.c:71 0x4faadf9d    
    gdk_event_source_dispatch() at gdkeventsource.c:360 0x4fad64d9    
    g_main_dispatch() at gmain.c:2.441 0x4752e62f    
    g_main_context_dispatch() at gmain.c:3.011 0x4752e62f    
    g_main_context_iterate() at gmain.c:3.089 0x4752ed70    
    g_main_loop_run() at gmain.c:3.297 0x4752f3a7    
    gtk_main() at gtkmain.c:1.362 0x41159155    
    main() at main.c:324 0x804a2e4    

log_handler(): says
--------------------
message="g_object_get: assertion `G_IS_OBJECT (object)' failed"    

notify_source_cb():
--------------------
source    GstElement *    0x0 (I changed the source to be initialized with
NULL)

*group    GstSourceGroup    {...}    
    playbin    GstPlayBin *    0x9701cf8 [GstPlayBin2]    
    lock    GMutex *    0x9166cb0    
    valid    gboolean    0    
    active    gboolean    0    
    uri    gchar *    0x9c657e8
"file:///home/thomas/Musik/Tom%20Waits/Bad%20As%20Me%20(Deluxe%20Version)/02%20Raised%20Right%20Men.mp3" 
    suburi    gchar *    0x0    
    streaminfo    GValueArray *    0x0    
    source    GstElement *    0x0    
    video_channels    GPtrArray *    0xeace07c8    
    audio_channels    GPtrArray *    0xeace0780    
    text_channels    GPtrArray *    0xeace0798    
    audio_sink    GstElement *    0x0    
    video_sink    GstElement *    0x0    
    uridecodebin    GstElement *    0x0    -> Is NULL!! Bad!
    suburidecodebin    GstElement *    0x0    
    pending    gint    0    
    sub_pending    gboolean    0    
    pad_added_id    gulong    0    
    pad_removed_id    gulong    0    
    no_more_pads_id    gulong    0    
    notify_source_id    gulong    0    
    drained_id    gulong    0    
    autoplug_factories_id    gulong    0    
    autoplug_select_id    gulong    0    
    autoplug_continue_id    gulong    0    
    sub_pad_added_id    gulong    0    
    sub_pad_removed_id    gulong    0    
    sub_no_more_pads_id    gulong    0    
    sub_autoplug_continue_id    gulong    0    
    stream_changed_pending_lock    GMutex *    0x8f5ebb0    
    stream_changed_pending    GList *    {...}    
    selector    GstSourceSelect [3]    0x9701e78    

*(group->playbin)    GstPlayBin    {...}    
    parent    GstPipeline    {...}    
    lock    GStaticRecMutex    {...}    
    groups    GstSourceGroup [2]    0x9701dfc    
        groups[0]    GstSourceGroup    {...}    
            playbin    GstPlayBin *    0x9701cf8 [GstPlayBin2]    
            lock    GMutex *    0x9166cb0    
            valid    gboolean    0    
            active    gboolean    0    
            uri    gchar *    0x9c657e8
"file:///home/thomas/Musik/Tom%20Waits/Bad%20As%20Me%20(Deluxe%20Version)/02%20Raised%20Right%20Men.mp3" 
            suburi    gchar *    0x0    
            streaminfo    GValueArray *    0x0    
            source    GstElement *    0x0    
            video_channels    GPtrArray *    0xeace07c8    
            audio_channels    GPtrArray *    0xeace0780    
            text_channels    GPtrArray *    0xeace0798    
            audio_sink    GstElement *    0x0    
            video_sink    GstElement *    0x0    
            uridecodebin    GstElement *    0x0    
            suburidecodebin    GstElement *    0x0    
            pending    gint    0    
            sub_pending    gboolean    0    
            pad_added_id    gulong    0    
            pad_removed_id    gulong    0    
            no_more_pads_id    gulong    0    
            notify_source_id    gulong    0    
            drained_id    gulong    0    
            autoplug_factories_id    gulong    0    
            autoplug_select_id    gulong    0    
            autoplug_continue_id    gulong    0    
            sub_pad_added_id    gulong    0    
            sub_pad_removed_id    gulong    0    
            sub_no_more_pads_id    gulong    0    
            sub_autoplug_continue_id    gulong    0    
            stream_changed_pending_lock    GMutex *    0x8f5ebb0    
            stream_changed_pending    GList *    {...}    
            selector    GstSourceSelect [3]    0x9701e78    
        groups[1]    GstSourceGroup    {...}    
            playbin    GstPlayBin *    0x9701cf8 [GstPlayBin2]    
            lock    GMutex *    0x91f80e0    
            valid    gboolean    1    
            active    gboolean    1    
            uri    gchar *    0x9a423a8
"file:///home/thomas/Musik/Eminem/Relapse/11%20Paul.mp3"    
            suburi    gchar *    0x0    
            streaminfo    GValueArray *    0x0    
            source    GstElement *    0x0    
            video_channels    GPtrArray *    0xeace04c0    
            audio_channels    GPtrArray *    0xeace0708    
            text_channels    GPtrArray *    0xeace0490    
            audio_sink    GstElement *    0x9714838 [GstBin]    
            video_sink    GstElement *    0x96a4830 [GstFakeSink]    
            uridecodebin    GstElement *    0x8634950 [GstURIDecodeBin]    
            suburidecodebin    GstElement *    0x0    
            pending    gint    0    
            sub_pending    gboolean    0    
            pad_added_id    gulong    10376    
            pad_removed_id    gulong    10377    
            no_more_pads_id    gulong    10378    
            notify_source_id    gulong    10379    
            drained_id    gulong    10380    
            autoplug_factories_id    gulong    10381    
            autoplug_select_id    gulong    10382    
            autoplug_continue_id    gulong    10383    
            sub_pad_added_id    gulong    0    
            sub_pad_removed_id    gulong    0    
            sub_no_more_pads_id    gulong    0    
            sub_autoplug_continue_id    gulong    0    
            stream_changed_pending_lock    GMutex *    0x96fbc58    
            stream_changed_pending    GList *    {...}    
            selector    GstSourceSelect [3]    0x9701fb4    
    curr_group    GstSourceGroup *    0x9701f38    
    next_group    GstSourceGroup *    0x9701dfc    
    connection_speed    guint    0    
    current_video    gint    -1    
    current_audio    gint    0    
    current_text    gint    -1    
    buffer_duration    guint64    18446744073709551615    
    buffer_size    guint    4294967295    
    playsink    GstPlaySink *    0x96a2020 [GstPlaySink]    
    source    GstElement *    0x9872518 [GstFileSrc]    
    dyn_lock    GMutex *    0x8cf6ab8    
    shutdown    gint    0    
    elements_lock    GMutex *    0x92bc2d8    
    elements_cookie    guint32    1013    
    elements    GList *    {...}    
    have_selector    gboolean    1    
    audio_sink    GstElement *    0x9714838 [GstBin]    
    video_sink    GstElement *    0x96a4830 [GstFakeSink]    
    text_sink    GstElement *    0x0    
    duration    struct {...} [5]    0x97020c4    
    ring_buffer_max_size    guint64    0    

*uridecodebin    struct _GstURIDecodeBin    {...}    
    parent_instance    GstBin    {...}    
    lock    GMutex *    0x96e39e0    
    factories_lock    GMutex *    0x90124a8    
    factories_cookie    guint32    0    
    factories    GList *    {...}    
    uri    gchar *    0x9a3e020
"file:///home/thomas/Musik/Walter%20Moers%20-%20Die%2013%20%C2%BD%20Leben%20des%20K%C3%A4pt%C2%B4n%20Blaub%C3%A4r%20(H%C3%B6rbuch)/CD14/02%20-%2012.%20Mein%20Leben%20in%20Atlantis%20-%20Zweifel.mp3" 
    connection_speed    guint    0    
    caps    GstCaps *    0xea2a8b40    
    encoding    gchar *    0x0    
    is_stream    gboolean    0    
    is_download    gboolean    0    
    need_queue    gboolean    0    
    buffer_duration    guint64    18446744073709551615    
    buffer_size    guint    4294967295    
    download    gboolean    0    
    use_buffering    gboolean    0    
    source    GstElement *    0x9872720 [GstFileSrc]    -> Is filled correctly
    queue    GstElement *    0x0    
    typefind    GstElement *    0x0    
    have_type_id    guint    0    
    decodebins    GSList *    {...}    
    pending_decodebins    GSList *    {...}    
    streams    GHashTable *    {...}    
    numpads    gint    6    
    src_np_sig_id    guint    0    
    src_nmp_sig_id    guint    0    
    pending    gint    0    
    async_pending    gboolean    0    
    expose_allstreams    gboolean    1    
    ring_buffer_max_size    guint64    0    



somehow the group->uridecodebin gets out of sync with the uridecodebin object?!



*(uridecodebin->source) -> gdb don't want to map this for some unknown
reason...
-> but this works:
*(0x9872720)    struct _GstFileSrc    {...}    
    element    GstBaseSrc    {...}    
    pagesize    guint    4096    
    filename    gchar *    0x995c468 "/home/thomas/Musik/Walter Moers - Die 13
\302\275 Leben des K\303\244pt\302\264n Blaub\303\244r (H\303\266rbuch)/CD14/02
- 12. Mein Leben in Atlantis - Zweifel.mp3"    
    uri    gchar *    0x9a5ff20
"file:///home/thomas/Musik/Walter%20Moers%20-%20Die%2013%20%C2%BD%20Leben%20des%20K%C3%A4pt%C2%B4n%20Blaub%C3%A4r%20(H%C3%B6rbuch)/CD14/02%20-%2012.%20Mein%20Leben%20in%20Atlantis%20-%20Zweifel.mp3" 
    fd    gint    0    
    read_position    guint64    0    
    touch    gboolean    1    
    using_mmap    gboolean    0    
    sequential    gboolean    0    
    seekable    gboolean    0    
    is_regular    gboolean    0    
    mapbuf    GstBuffer *    0x0    
    mapsize    size_t    4194304    
    use_mmap    gboolean    0    


the crash seems to happen excatly two seconds before switching to a new song.
the rhyhtmbox player hangs at two seconds before a songs finishes. when you
then press next in rhythmbox this crash happens.

I want this bug to get fixed as it makes rhythmbox nearly unusable. I'm not
sure if this is a playbin2 or rhythmbox bug.

see also the attachment.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list