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 583318 - Assertion from within playbin2
Assertion from within playbin2
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal normal
: 0.10.24
Assigned To: Wim Taymans
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-05-20 10:39 UTC by Jan Schmidt
Modified: 2009-05-27 14:14 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Jan Schmidt 2009-05-20 10:39:58 UTC
Sometimes on quitting Totem I get:

(gdb) bt
  • #0 IA__g_log
    at gmessages.c line 518
  • #1 IA__g_return_if_fail_warning
  • #2 IA__g_object_get
    at gobject.c line 1585
  • #3 gst_play_sink_get_volume
    at gstplaysink.c line 577
  • #4 gst_play_bin_get_property
    at gstplaybin2.c line 1614
  • #5 object_get_property
    at gobject.c line 904
  • #6 IA__g_object_get_valist
    at gobject.c line 1498
  • #7 IA__g_object_get
    at gobject.c line 1588
  • #8 bacon_video_widget_get_volume
    at bacon-video-widget-gst-0.10.c line 3697
  • #9 totem_action_exit
    at totem-object.c line 908
  • #10 totem_action_handle_key_press
    at totem-object.c line 3474
  • #11 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 84
  • #12 IA__g_closure_invoke
    at gclosure.c line 767
  • #13 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #14 IA__g_signal_emit_valist
    at gsignal.c line 2990
  • #15 IA__g_signal_emit
    at gsignal.c line 3037
  • #16 gtk_widget_event_internal
    at gtkwidget.c line 4761
  • #17 IA__gtk_propagate_event
    at gtkmain.c line 2370
  • #18 IA__gtk_main_do_event
    at gtkmain.c line 1601
  • #19 gdk_event_dispatch
    at gdkevents-x11.c line 2364
  • #20 g_main_dispatch
    at gmain.c line 1814
  • #21 IA__g_main_context_dispatch
    at gmain.c line 2367
  • #22 g_main_context_iterate
    at gmain.c line 2448
  • #23 IA__g_main_loop_run
    at gmain.c line 2656
  • #24 IA__gtk_main
    at gtkmain.c line 1205
  • #25 main
    at totem.c line 278

This happens when totem queries the volume after setting playbin2 to NULL. playsink cached a pointer to the element providing the volume property, but by setting playbin2 to NULL, the autoaudiosink was set to NULL too, and the volume element no longer exists.

Not sure whether this indicates that playbin2 wouldn't properly set/query the volume if set back to READY, or if it will regenerate the audiosink chain properly and work again. Either way, it probably needs to invalidate the volume property when deactivating the audiosink, and query for it again when reactivating things.
Comment 1 Wim Taymans 2009-05-27 13:47:46 UTC
I could not reproduce it but this should hopefully fix it:

commit de06a6adb5d34990e2306d1006e2ff00a5a0e41c
Author: Wim Taymans <wim.taymans@collabora.co.uk>
Date:   Wed May 27 15:36:51 2009 +0200

    playbin2; release refs to volume/mute properties
    
    Release the refs to the volume and mute property elemens before setting the
    child elements to READY or NULL.
    Fixes #583318
Comment 2 Jan Schmidt 2009-05-27 14:14:22 UTC
Hopefully it will re-discover the 'direct-volume' elements correctly if the state is set back to PAUSED/PLAYING again?