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 703279 - souphttpsrc can crash if dconf is not available
souphttpsrc can crash if dconf is not available
Status: RESOLVED NOTABUG
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
1.0.6
Other Linux
: Normal enhancement
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-06-28 17:52 UTC by Marcin Lewandowski
Modified: 2013-06-28 18:11 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Marcin Lewandowski 2013-06-28 17:52:46 UTC
I've found out that souphttpsrc can crash if DConf is not available. This can happen on headless environment (server etc.) with D-Bus session bus available but without any other services that normally come with running D-Bus session (I mean DConf service, GUI etc.)

It seems that souphttpsrc tries to detect proxy address from the system settings but if underlying settings backend is not available it just crashes instead of setting no proxy.

Possible workaround is to set GSETTINGS_BACKEND env variable to "null".

I am not sure if it is behaviour that can be changed on GStreamer plugin level of it is a black box logic embedded in libsoup but it would be nice to have additional bool parameter like "read-proxy-from-settings" in souphttpsrc to explicitely control such behaviour without need to apply ugly workarounds.

Backtrace:

  • #0 g_logv
    at /build/buildd/glib2.0-2.32.3/./glib/gmessages.c line 765
  • #1 g_log
    at /build/buildd/glib2.0-2.32.3/./glib/gmessages.c line 792
  • #2 ??
    from /usr/lib/i386-linux-gnu/gio/modules/libdconfsettings.so
  • #3 ??
    from /usr/lib/i386-linux-gnu/gio/modules/libdconfsettings.so
  • #4 ??
    from /usr/lib/i386-linux-gnu/gio/modules/libdconfsettings.so
  • #5 ??
    from /usr/lib/i386-linux-gnu/gio/modules/libdconfsettings.so
  • #6 g_type_create_instance
    at /build/buildd/glib2.0-2.32.3/./gobject/gtype.c line 1892
  • #7 g_object_constructor
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1849
  • #8 g_object_newv
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1632
  • #9 g_object_new
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1542
  • #10 try_implementation
    at /build/buildd/glib2.0-2.32.3/./gio/giomodule.c line 645
  • #11 _g_io_module_get_default
    at /build/buildd/glib2.0-2.32.3/./gio/giomodule.c line 742
  • #12 g_settings_backend_get_default
    at /build/buildd/glib2.0-2.32.3/./gio/gsettingsbackend.c line 985
  • #13 g_settings_constructed
    at /build/buildd/glib2.0-2.32.3/./gio/gsettings.c line 567
  • #14 g_object_newv
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1741
  • #15 g_object_new_valist
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1830
  • #16 g_object_new
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1545
  • #17 g_settings_new
    at /build/buildd/glib2.0-2.32.3/./gio/gsettings.c line 857
  • #18 ??
    from /usr/lib/i386-linux-gnu/gio/modules/libgiognomeproxy.so
  • #19 g_type_create_instance
    at /build/buildd/glib2.0-2.32.3/./gobject/gtype.c line 1892
  • #20 g_object_constructor
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1849
  • #21 g_object_newv
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1632
  • #22 g_object_new
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1542
  • #23 try_implementation
    at /build/buildd/glib2.0-2.32.3/./gio/giomodule.c line 645
  • #24 _g_io_module_get_default
    at /build/buildd/glib2.0-2.32.3/./gio/giomodule.c line 742
  • #25 g_proxy_resolver_get_default
    at /build/buildd/glib2.0-2.32.3/./gio/gproxyresolver.c line 65
  • #26 ??
    from /usr/lib/i386-linux-gnu/libsoup-gnome-2.4.so.1
  • #27 g_type_create_instance
    at /build/buildd/glib2.0-2.32.3/./gobject/gtype.c line 1892
  • #28 g_object_constructor
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1849
  • #29 g_object_newv
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1632
  • #30 g_object_new
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1542
  • #31 soup_session_add_feature_by_type
    from /usr/lib/i386-linux-gnu/libsoup-2.4.so.1
  • #32 ??
    from /usr/lib/i386-linux-gnu/libsoup-2.4.so.1
  • #33 object_set_property
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1352
  • #34 g_object_newv
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1745
  • #35 g_object_new_valist
    at /build/buildd/glib2.0-2.32.3/./gobject/gobject.c line 1830
  • #36 soup_session_async_new_with_options
    from /usr/lib/i386-linux-gnu/libsoup-2.4.so.1
  • #37 gst_soup_http_src_start
    at gstsouphttpsrc.c line 1223
  • #38 gst_base_src_start
    at gstbasesrc.c line 3141
  • #39 gst_base_src_start
    at gstbasesrc.c line 3116
  • #40 gst_base_src_activate_push
    at gstbasesrc.c line 3509
  • #41 gst_base_src_activate_mode
    at gstbasesrc.c line 3584
  • #42 gst_pad_activate_mode
    at gstpad.c line 1060
  • #43 gst_pad_activate_default
    at gstpad.c line 808
  • #44 gst_pad_set_active
    at gstpad.c line 936
  • #45 activate_pads
    at gstelement.c line 2679
  • #46 gst_iterator_fold
    at gstiterator.c line 614
  • #47 iterator_activate_fold_with_resync
    at gstelement.c line 2699
  • #48 gst_element_pads_activate
    at gstelement.c line 2735
  • #49 gst_element_change_state_func
    at gstelement.c line 2807
  • #50 gst_base_src_change_state
    at gstbasesrc.c line 3621
  • #51 gst_element_change_state
    at gstelement.c line 2594
  • #52 gst_element_set_state_func
    at gstelement.c line 2550
  • #53 gst_element_set_state
    at gstelement.c line 2451
  • #54 gst_bin_element_set_state
    at gstbin.c line 2292
  • #55 gst_bin_change_state_func
    at gstbin.c line 2594
  • #56 gst_element_change_state
    at gstelement.c line 2594
  • #57 gst_element_continue_state
    at gstelement.c line 2305
  • #58 gst_element_change_state
    at gstelement.c line 2631
  • #59 gst_element_set_state_func
    at gstelement.c line 2550
  • #60 gst_element_set_state
    at gstelement.c line 2451
  • #61 myapp_daemon_element_base_transition_attach_begin
    at src/daemon/pipeline/elements/element-base.c line 2553
  • #62 _myapp_daemon_element_base_transition_attach_begin_myapp_daemon_element_state_transition_func
    at src/daemon/pipeline/elements/element-base.c line 2465
  • #63 myapp_daemon_element_base_state_transition
    at src/daemon/pipeline/elements/element-base.c line 2349
  • #64 myapp_daemon_element_base_attach
    at src/daemon/pipeline/elements/element-base.c line 2481
  • #65 myapp_daemon_pipeline_manager_add_source
    at src/daemon/pipeline/supervisors/pipeline-manager.c line 1203
  • #66 myapp_daemon_pipeline_manager_initialize_config_elements
    at src/daemon/pipeline/supervisors/pipeline-manager.c line 621
  • #67 myapp_daemon_pipeline_manager_on_bus_message
    at src/daemon/pipeline/supervisors/pipeline-manager.c line 1630

Comment 1 Tim-Philipp Müller 2013-06-28 17:57:08 UTC
It looks like a bug in soup or gio to me, we just call soup_session_async_new_with_options() - so unless we pass some bogus arguments it should not crash.
Comment 2 Nicolas Dufresne (ndufresne) 2013-06-28 18:11:01 UTC
Actually, this is a common packaging error. You have the Gnome proxy extension installed (see glib-networking) but you don't have the schemas for it so DConf library will abort your program. To solve it, remove that extension, glib can work just fine without any proxy backend support, or just the libproxy one if you need it.

Ideally, you should split the Gnome backend from glib-networking package (e.g. glib-networking-gnome), and make sure that it correctly depends on having the shcemes installed.