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 766723 - Default ports generate errors in rhythmbox
Default ports generate errors in rhythmbox
Status: RESOLVED FIXED
Product: libdmapsharing
Classification: Other
Component: Transcoding
git master
Other Linux
: Normal normal
: ---
Assigned To: W. Michael Petullo
W. Michael Petullo
Depends on:
Blocks:
 
 
Reported: 2016-05-20 15:06 UTC by Bastien Nocera
Modified: 2017-06-27 02:40 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
dmap-share: Use idiomatic way of checking for errors (1.84 KB, patch)
2017-06-26 15:39 UTC, Bastien Nocera
none Details | Review
dmap-share: Don't throw warnings during normal operations (2.02 KB, patch)
2017-06-26 15:39 UTC, Bastien Nocera
none Details | Review

Description Bastien Nocera 2016-05-20 15:06:34 UTC
Because rhythmbox starts both DAAP and DACP, libdmapsharing generates errors.

Maybe it shouldn't generate errors unless the port was not the default.

Thread 1 "lt-rhythmbox" hit Breakpoint 1, 0x00007ffff29c22e0 in soup_server_listen_all () from /lib64/libsoup-2.4.so.1
  • #0 soup_server_listen_all
    from /lib64/libsoup-2.4.so.1
  • #1 _dmap_share_server_start
    at dmap-share.c line 287
  • #2 daap_share_new
    at daap-share.c line 177
  • #3 create_share
    at rb-daap-sharing.c line 111
  • #4 rb_daap_sharing_init
    at rb-daap-sharing.c line 170
  • #5 impl_activate
    at rb-daap-plugin.c line 206
  • #6 ffi_call_unix64
    from /lib64/libffi.so.6
  • #7 ffi_call
    from /lib64/libffi.so.6
  • #8 g_callable_info_invoke
    at girepository/gicallableinfo.c line 742
  • #9 g_function_info_invoke
    at girepository/gifunctioninfo.c line 283
  • #10 peas_gi_method_call
    from /lib64/libpeas-1.0.so.0
  • #11 peas_extension_callv
    from /lib64/libpeas-1.0.so.0
  • #12 peas_extension_call_valist
    from /lib64/libpeas-1.0.so.0
  • #13 peas_extension_call
    from /lib64/libpeas-1.0.so.0
  • #14 extension_added_cb
    at rb-shell.c line 808
  • #15 g_closure_invoke
    at gclosure.c line 804
  • #16 signal_emit_unlocked_R
    at gsignal.c line 3629
  • #17 g_signal_emit_valist
    at gsignal.c line 3385
  • #18 g_signal_emit
    at gsignal.c line 3441
  • #19 g_cclosure_marshal_VOID__BOXED
    at gmarshal.c line 1910
  • #20 g_closure_invoke
    at gclosure.c line 804
  • #21 signal_emit_unlocked_R
    at gsignal.c line 3699
  • #22 g_signal_emit_valist
    at gsignal.c line 3385
  • #23 g_signal_emit
    at gsignal.c line 3441
  • #24 peas_engine_set_loaded_plugins
    from /lib64/libpeas-1.0.so.0
  • #25 object_set_property
    at gobject.c line 1421
  • #26 g_object_set_property
    at gobject.c line 2369
  • #27 g_settings_binding_key_changed
    at gsettings.c line 2550
  • #28 g_settings_bind_with_mapping
  • #29 g_settings_bind
    at gsettings.c line 2675
  • #30 construct_plugins
    at rb-shell.c line 906
  • #31 rb_shell_constructed
    at rb-shell.c line 1768
  • #32 g_object_new_internal
    at gobject.c line 1821
  • #33 g_object_new_valist
    at gobject.c line 2040
  • #34 g_object_new
    at gobject.c line 1624
  • #35 impl_startup
    at rb-application.c line 388
  • #36 g_cclosure_marshal_VOID__VOIDv
    at gmarshal.c line 905
  • #37 g_type_class_meta_marshalv
    at gclosure.c line 1024
  • #38 _g_closure_invoke_va
    at gclosure.c line 867
  • #39 g_signal_emit_valist
    at gsignal.c line 3294
  • #40 g_signal_emit
    at gsignal.c line 3441
  • #41 g_application_register
    at gapplication.c line 2049
  • #42 impl_local_command_line
    at rb-application.c line 422
  • #43 g_application_run
    at gapplication.c line 2350
  • #44 rb_application_run
    at rb-application.c line 646
  • #45 main
    at main.c line 89
  • #0 soup_server_listen_all
    from /lib64/libsoup-2.4.so.1
  • #1 _dmap_share_server_start
    at dmap-share.c line 287
  • #2 dacp_share_new
    at dacp-share.c line 439
  • #3 rb_daap_create_dacp_share
    at rb-dacp-pairing-page.c line 459
  • #4 impl_activate
    at rb-daap-plugin.c line 208
  • #5 ffi_call_unix64
    from /lib64/libffi.so.6
  • #6 ffi_call
    from /lib64/libffi.so.6
  • #7 g_callable_info_invoke
    at girepository/gicallableinfo.c line 742
  • #8 g_function_info_invoke
    at girepository/gifunctioninfo.c line 283
  • #9 peas_gi_method_call
    from /lib64/libpeas-1.0.so.0
  • #10 peas_extension_callv
    from /lib64/libpeas-1.0.so.0
  • #11 peas_extension_call_valist
    from /lib64/libpeas-1.0.so.0
  • #12 peas_extension_call
    from /lib64/libpeas-1.0.so.0
  • #13 extension_added_cb
    at rb-shell.c line 808
  • #14 g_closure_invoke
    at gclosure.c line 804
  • #15 signal_emit_unlocked_R
    at gsignal.c line 3629
  • #16 g_signal_emit_valist
    at gsignal.c line 3385
  • #17 g_signal_emit
    at gsignal.c line 3441
  • #18 g_cclosure_marshal_VOID__BOXED
    at gmarshal.c line 1910
  • #19 g_closure_invoke
    at gclosure.c line 804
  • #20 signal_emit_unlocked_R
    at gsignal.c line 3699
  • #21 g_signal_emit_valist
    at gsignal.c line 3385
  • #22 g_signal_emit
    at gsignal.c line 3441
  • #23 peas_engine_set_loaded_plugins
    from /lib64/libpeas-1.0.so.0
  • #24 object_set_property
    at gobject.c line 1421
  • #25 g_object_set_property
    at gobject.c line 2369
  • #26 g_settings_binding_key_changed
    at gsettings.c line 2550
  • #27 g_settings_bind_with_mapping
  • #28 g_settings_bind
    at gsettings.c line 2675
  • #29 construct_plugins
    at rb-shell.c line 906
  • #30 rb_shell_constructed
    at rb-shell.c line 1768
  • #31 g_object_new_internal
    at gobject.c line 1821
  • #32 g_object_new_valist
    at gobject.c line 2040
  • #33 g_object_new
    at gobject.c line 1624
  • #34 impl_startup
    at rb-application.c line 388
  • #35 g_cclosure_marshal_VOID__VOIDv
    at gmarshal.c line 905
  • #36 g_type_class_meta_marshalv
    at gclosure.c line 1024
  • #37 _g_closure_invoke_va
    at gclosure.c line 867
  • #38 g_signal_emit_valist
    at gsignal.c line 3294
  • #39 g_signal_emit
    at gsignal.c line 3441
  • #40 g_application_register
    at gapplication.c line 2049
  • #41 impl_local_command_line
    at rb-application.c line 422
  • #42 g_application_run
    at gapplication.c line 2350
  • #43 rb_application_run
    at rb-application.c line 646
  • #44 main
    at main.c line 89

(lt-rhythmbox:22516): libdmapsharing-WARNING **: Unable to start music sharing server on port 3689: Could not listen on address 0.0.0.0, port 3689: Error binding to address: Address already in use. Trying any open IPv6 port
Comment 1 Bastien Nocera 2016-05-31 09:23:27 UTC
Filed bug 767055 against libsoup.
Comment 2 gnome.vrb 2016-10-25 14:17:48 UTC
Still seeing this.

(lt-rhythmbox:13528): libdmapsharing-WARNING **: Unable to start music sharing server on port 3689: Could not listen on address 0.0.0.0, port 3689: Error binding to address: Address already in use. Trying any open IPv6 port

dev@unstable:~/source/git/rhythmbox$ shell/rhythmbox  --version
rhythmbox 3.4.1

libdmapsharing / 2.9.36
Comment 3 Bastien Nocera 2017-06-26 15:39:44 UTC
Created attachment 354520 [details] [review]
dmap-share: Use idiomatic way of checking for errors

Use the retval of the API, instead of assuming that the API will always
set the error (it'd be a bug, but at least we'd go down the correct
branch).
Comment 4 Bastien Nocera 2017-06-26 15:39:53 UTC
Created attachment 354521 [details] [review]
dmap-share: Don't throw warnings during normal operations

DACP (_touch-able._tcp) and DAAP (_daap._tcp) on macOS use the same
default port, 3689, to advertise both services. A single server likely
implements both protocols, and internally routes the requests.

This is not the case with the libdmapsharing, with each protocol getting
its own server running on the port (both in IPv4 and IPv6). When an
application like rhythmbox would launch both possible types of share,
the first one would go without a hitch, the second one would only be
accessible via IPv6 on a different port.

This doesn't make much difference as:
- which port is used is ultimately unimportant as the port is
  advertised in mDNS
- the port already being used might mean we're sharing music with
  another application on the same machine
and none of those are programming or configuration errors.

Ideally, services with the same port would share a single SoupServer,
but until then, this change will not make any difference in terms of
interoperability.
Comment 5 W. Michael Petullo 2017-06-26 16:02:49 UTC
Merged and pushed to master. I hope to test and push a new release tonight.
Comment 6 W. Michael Petullo 2017-06-27 02:40:33 UTC
Fixed in 2.9.39.