Summary: | Regression in salut/p2p mode | ||
---|---|---|---|
Product: | Telepathy | Reporter: | Robert Staudinger <robert.staudinger> |
Component: | mission-control | Assignee: | Telepathy bugs list <telepathy-bugs> |
Status: | RESOLVED FIXED | QA Contact: | Telepathy bugs list <telepathy-bugs> |
Severity: | normal | ||
Priority: | medium | CC: | olli.salli |
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: | Account: don't crash on Get('Parameters') if _dup_parameters fails |
Description
Robert Staudinger
2012-01-19 07:48:44 UTC
mission-control log when the "client-pong" test app starts, what stands out is "salut/local_ytstenut/automatic_account not Valid" --- (process:16658): tp-glib/proxy-DEBUG: noc_idle_context_invoke: NameOwnerChanged(:1.1251, -> :1.1251) (process:16658): tp-glib/proxy-DEBUG: noc_idle_context_invoke: NameOwnerChanged(:1.1251, -> :1.1251) (process:16658): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.AccountManager (process:16658): mcd-DEBUG: get_valid_accounts: called (process:16658): mcd-DEBUG: get_invalid_accounts: called (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: called ** (process:16658): DEBUG: account_manager_hold (line:260): Adding hold reference for :1.1251 (process:16658): tp-glib/proxy-DEBUG: tp_dbus_daemon_watch_name_owner: Adding match rule type='signal',sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0=':1.1251' (process:16658): tp-glib/proxy-DEBUG: tp_proxy_constructor: 0x87cf840: request 0x878fb80 represents core features on TpAccount (process:16658): tp-glib/proxy-DEBUG: tp_proxy_borrow_interface_by_id: 0x87cf840: org.freedesktop.Telepathy.Account DBusGProxy is 0x87aca90 (process:16658): tp-glib/proxy-DEBUG: tp_proxy_borrow_interface_by_id: 0x87cf840: org.freedesktop.DBus.Properties DBusGProxy is 0x879e950 ** (process:16658): DEBUG: account_manager_set_presence (line:215): Requesting that account presence be changed to: 2 (available) (process:16658): tp-glib/proxy-DEBUG: _tp_dbus_daemon_get_name_owner_idle: GetNameOwner(:1.1251) -> :1.1251 (process:16658): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.Account (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: called (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: skipping inactive optional iface org.freedesktop.Telepathy.Account.Interface.ExternalPasswordStorage.DRAFT (process:16658): mcd-DEBUG: _mcd_account_dup_parameters: called (process:16658): mcd-DEBUG: get_connect_automatically: called for salut/local_ytstenut/automatic_account (process:16658): mcd-DEBUG: get_mcddbusprop: org.freedesktop.Telepathy.Account, RequestedPresence (process:16658): mcd-DEBUG: set_requested_presence: called for salut/local_ytstenut/automatic_account (process:16658): mcd-DEBUG: set_requested_presence: setting requested presence: 2, available, (process:16658): mcd-DEBUG: mcd_account_changed_property: called: RequestedPresence (process:16658): mcd-DEBUG: mcd_account_changed_property: First changed property (process:16658): mcd-DEBUG: mcd_account_request_presence_int: Requested presence: 2 available (process:16658): mcd-DEBUG: mcd_account_request_presence_int: salut/local_ytstenut/automatic_account not Valid (process:16658): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.Account (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: called (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: skipping inactive optional iface org.freedesktop.Telepathy.Account.Interface.ExternalPasswordStorage.DRAFT (process:16658): mcd-DEBUG: _mcd_account_dup_parameters: called (process:16658): mcd-DEBUG: get_connect_automatically: called for gabble/jabber/romeo_40montague_2eorg0 (process:16658): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.Account (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: called (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: skipping inactive optional iface org.freedesktop.Telepathy.Account.Interface.ExternalPasswordStorage.DRAFT (process:16658): mcd-DEBUG: _mcd_account_dup_parameters: called (process:16658): mcd-DEBUG: get_connect_automatically: called for gabble/jabber/t3s7a_40test_2ecollabora_2eco_2euk0 (process:16658): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.Account (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: called (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: skipping inactive optional iface org.freedesktop.Telepathy.Account.Interface.ExternalPasswordStorage.DRAFT (process:16658): mcd-DEBUG: _mcd_account_dup_parameters: called (process:16658): mcd-DEBUG: get_connect_automatically: called for gabble/jabber/r0b5t4_40jabber_2eorg0 (process:16658): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.Account (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: called (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: skipping inactive optional iface org.freedesktop.Telepathy.Account.Interface.ExternalPasswordStorage.DRAFT (process:16658): mcd-DEBUG: _mcd_account_dup_parameters: called (process:16658): mcd-DEBUG: get_connect_automatically: called for gabble/jabber/ytstenut3_40test_2ecollabora_2eco_2euk0 (process:16658): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.Account (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: called (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: skipping inactive optional iface org.freedesktop.Telepathy.Account.Interface.ExternalPasswordStorage.DRAFT (process:16658): mcd-DEBUG: _mcd_account_dup_parameters: called (process:16658): mcd-DEBUG: get_connect_automatically: called for gabble/jabber/ytstenut1_40test_2ecollabora_2eco_2euk0 (process:16658): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.Account (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: called (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: skipping inactive optional iface org.freedesktop.Telepathy.Account.Interface.ExternalPasswordStorage.DRAFT (process:16658): mcd-DEBUG: _mcd_account_dup_parameters: called (process:16658): mcd-DEBUG: get_connect_automatically: called for gabble/jabber/robert_2estaudinger_40gmail_2ecom0 (process:16658): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.Account (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: called (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: skipping inactive optional iface org.freedesktop.Telepathy.Account.Interface.ExternalPasswordStorage.DRAFT (process:16658): mcd-DEBUG: _mcd_account_dup_parameters: called (process:16658): mcd-DEBUG: get_connect_automatically: called for gabble/jabber/ytstenut2_40test_2ecollabora_2eco_2euk0 (process:16658): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.Account (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: called (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: skipping inactive optional iface org.freedesktop.Telepathy.Account.Interface.ExternalPasswordStorage.DRAFT (process:16658): mcd-DEBUG: _mcd_account_dup_parameters: called (process:16658): mcd-DEBUG: get_connect_automatically: called for gabble/jabber/robsta_40otcchat_2eorg0 (process:16658): tp-glib/accounts-DEBUG: _tp_account_got_all_cb: Got whole set of properties for /org/freedesktop/Telepathy/Account/salut/local_ytstenut/automatic_account (process:16658): tp-glib/proxy-DEBUG: tp_proxy_poll_features: 0x87cf840: request 0x878fb80 prepared (process:16658): tp-glib/proxy-DEBUG: tp_proxy_prepare_request_finish: 0x878fb80 ** (process:16658): DEBUG: on_account_request_presence_ready (line:188): Account presence was changed (process:16658): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.Account (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: called (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: skipping inactive optional iface org.freedesktop.Telepathy.Account.Interface.ExternalPasswordStorage.DRAFT (process:16658): mcd-DEBUG: _mcd_account_dup_parameters: called (process:16658): mcd-DEBUG: get_connect_automatically: called for gabble/jabber/lady_2dgaga_40test_2ecollabora_2eco_2euk0 (process:16658): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.Account (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: called (process:16658): mcd-DEBUG: mcd_dbus_get_interfaces: skipping inactive optional iface org.freedesktop.Telepathy.Account.Interface.ExternalPasswordStorage.DRAFT (process:16658): mcd-DEBUG: _mcd_account_dup_parameters: called (process:16658): mcd-DEBUG: get_connect_automatically: called for salut/local_ytstenut/automatic_account (process:16658): mcd-DEBUG: emit_property_changed: called (process:16658): mcd-DEBUG: _mcd_client_registry_found_name: Registering client org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0 (process:16658): mcd-DEBUG: mcd_client_proxy_constructed: org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0 (process:16658): tp-glib/proxy-DEBUG: tp_dbus_daemon_watch_name_owner: Adding match rule type='signal',sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0' (process:16658): tp-glib/proxy-DEBUG: noc_idle_context_invoke: NameOwnerChanged(org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0, -> :1.1251) (process:16658): mcd-DEBUG: mcd_client_proxy_introspect: No .client file for org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0. Ask on D-Bus. (process:16658): tp-glib/proxy-DEBUG: tp_proxy_borrow_interface_by_id: 0x8775570: org.freedesktop.DBus.Properties DBusGProxy is 0x87c3338 (process:16658): tp-glib/proxy-DEBUG: noc_idle_context_invoke: NameOwnerChanged(org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0, -> :1.1251) (process:16658): tp-glib/proxy-DEBUG: _tp_dbus_daemon_get_name_owner_idle: GetNameOwner(org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0) -> :1.1251 (process:16658): mcd-DEBUG: _mcd_client_proxy_add_interfaces: org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0: org.freedesktop.Telepathy.Client.Handler (process:16658): mcd-DEBUG: _mcd_client_proxy_get_interfaces_cb: Client org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0 (process:16658): mcd-DEBUG: _mcd_client_proxy_get_interfaces_cb: org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0 is a Handler (process:16658): mcd-DEBUG: _mcd_client_proxy_handler_get_all_cb: org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0 has 1 HandlerChannelFilter entries (process:16658): mcd-DEBUG: _mcd_client_proxy_handler_get_all_cb: org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0 has BypassApproval=F (process:16658): mcd-DEBUG: _mcd_client_proxy_handler_get_all_cb: org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0 has BypassObservers=F (process:16658): mcd-DEBUG: mcd_client_registry_ready_cb: org.freedesktop.Telepathy.Client.Ytsenut.Client.remote.service.name._3a1_2e1251.n0 $ mc-tool show salut/local_ytstenut/automatic_account Account: salut/local_ytstenut/automatic_account Display Name: Last Name Enabled: enabled Valid: false Icon: im-local-ytstenut Connects: only when requested Service: local-ytstenut Presences: Automatic: available (2) "" Current: offline (1) "" Requested: offline (1) "" Changing: no (string) last-name = Last Name (string) first-name = First Name I'll take a look at it. so assigning it to my self. Robert, can you please post both missioncontrol.log and salut-testing.log? I want to confirm I did reproduce the same error This bug changed behaviour, now MC crashes immediately before anything happens in salut. MC also crashes on $ mc-tool show salut/local_ytstenut/automatic_account (process:11293): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.AccountManager (process:11293): mcd-DEBUG: get_valid_accounts: called (process:11293): mcd-DEBUG: get_invalid_accounts: called (process:11293): mcd-DEBUG: mcd_dbus_get_interfaces: called ** (process:11293): DEBUG: account_manager_hold (line:260): Adding hold reference for :1.2575 (process:11293): tp-glib/proxy-DEBUG: tp_dbus_daemon_watch_name_owner: Adding match rule type='signal',sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0=':1.2575' (process:11293): tp-glib/proxy-DEBUG: tp_proxy_constructor: 0x80a4808: request 0x80b3330 represents core features on TpAccount (process:11293): tp-glib/proxy-DEBUG: tp_proxy_borrow_interface_by_id: 0x80a4808: org.freedesktop.Telepathy.Account DBusGProxy is 0x80b2e58 (process:11293): tp-glib/proxy-DEBUG: tp_proxy_borrow_interface_by_id: 0x80a4808: org.freedesktop.DBus.Properties DBusGProxy is 0x80a2d68 ** (process:11293): DEBUG: account_manager_set_presence (line:215): Requesting that account presence be changed to: 2 (available) (process:11293): tp-glib/proxy-DEBUG: _tp_dbus_daemon_get_name_owner_idle: GetNameOwner(:1.2575) -> :1.2575 (process:11293): mcd-DEBUG: dbusprop_get_all: org.freedesktop.Telepathy.Account (process:11293): mcd-DEBUG: mcd_dbus_get_interfaces: called (process:11293): mcd-DEBUG: mcd_dbus_get_interfaces: skipping inactive optional iface org.freedesktop.Telepathy.Account.Interface.ExternalPasswordStorage.DRAFT (process:11293): mcd-DEBUG: _mcd_account_dup_parameters: called (process:11293): mcd-DEBUG: _mcd_account_dup_parameters: unable to get protocol for local-ytstenut account salut/local_ytstenut/automatic_account (process:11293): mcd-DEBUG: get_connect_automatically: called for salut/local_ytstenut/automatic_account Program received signal SIGSEGV, Segmentation fault. 0x4360c91d in g_hash_table_foreach () from /lib/libglib-2.0.so.0 Missing separate debuginfos, use: debuginfo-install GConf2-3.2.3-1.fc16.i686 NetworkManager-glib-0.9.2-1.fc16.i686 dbus-libs-1.4.10-3.fc16.i686 dconf-0.10.0-1.fc16.i686 glib2-2.30.2-1.fc16.i686 glibc-2.14.90-24.fc16.4.i686 libffi-3.0.10-1.fc16.i686 libgcc-4.6.2-1.fc16.i686 libgcrypt-1.5.0-2.fc16.i686 libgnome-keyring-3.2.0-1.fc16.i686 libgpg-error-1.10-1.fc16.i686 libgudev1-173-3.fc16.i686 libselinux-2.1.6-5.fc16.i686 libudev-173-3.fc16.i686 libuuid-2.20.1-2.2.fc16.i686 nspr-4.8.9-2.fc16.i686 nss-3.13.1-11.fc16.i686 nss-util-3.13.1-3.fc16.i686 telepathy-glib-0.16.4-1.fc16.i686 upower-0.9.15-1.fc16.i686 zlib-1.2.5-6.fc16.i686 (gdb) bt #0 0x4360c91d in g_hash_table_foreach () from /lib/libglib-2.0.so.0 #1 0x43a4e237 in hashtable_iterator (hash_type=134553912, instance=0x0, iterator=0x43a49a10 <marshal_map_entry>, user_data=0xbfffe8b4) at dbus-gvalue-utils.c:608 #2 0x43a4c115 in dbus_g_type_map_value_iterate (value=0x807df18, iterator= 0x43a49a10 <marshal_map_entry>, user_data=0xbfffe8b4) at dbus-gtype-specialized.c:912 #3 0x43a48aa1 in marshal_map (iter=0xbfffe928, value=0x807df18) at dbus-gvalue.c:1701 #4 0x43a498c5 in _dbus_gvalue_marshal (iter=0xbfffe928, value=0x807df18) at dbus-gvalue.c:1964 #5 0x43a49c34 in marshal_variant (iter=0xbfffe9b8, value=0xbfffea2c) at dbus-gvalue.c:1785 #6 0x43a498c5 in _dbus_gvalue_marshal (iter=0xbfffe9b8, value=0xbfffea2c) at dbus-gvalue.c:1964 #7 0x43a49a9c in marshal_map_entry (data=0xbfffeb44, value=0xbfffea2c, key= 0xbfffea18) at dbus-gvalue.c:1636 #8 marshal_map_entry (key=0xbfffea18, value=0xbfffea2c, data=0xbfffeb44) at dbus-gvalue.c:1617 #9 0x43a4dd0f in hashtable_foreach_with_values (key=0x49c5fad9, value= 0x807df18, user_data=0xbfffeaa0) at dbus-gvalue-utils.c:586 #10 0x4360c952 in g_hash_table_foreach () from /lib/libglib-2.0.so.0 #11 0x43a4e237 in hashtable_iterator (hash_type=134553912, instance=0x80b2c18, ---Type <return> to continue, or q <return> to quit--- iterator=0x43a49a10 <marshal_map_entry>, user_data=0xbfffeb44) at dbus-gvalue-utils.c:608 #12 0x43a4c115 in dbus_g_type_map_value_iterate (value=0xbfffec4c, iterator= 0x43a49a10 <marshal_map_entry>, user_data=0xbfffeb44) at dbus-gtype-specialized.c:912 #13 0x43a48aa1 in marshal_map (iter=0xbfffec14, value=0xbfffec4c) at dbus-gvalue.c:1701 #14 0x43a498c5 in _dbus_gvalue_marshal (iter=0xbfffec14, value=0xbfffec4c) at dbus-gvalue.c:1964 #15 0x43a412a1 in dbus_g_method_return (context=0x80b5a60) at dbus-gobject.c:2946 #16 0x49c3bbe4 in tp_svc_dbus_properties_return_from_get_all ( out_Properties=<optimized out>, context=<optimized out>) at /usr/include/telepathy-1.0/telepathy-glib/_gen/tp-svc-generic.h:96 #17 get_all_iter (data=0x80a4520) at mcd-dbusprop.c:332 #18 dbusprop_get_all (self=0x807be78, interface_name= 0x80b9818 "org.freedesktop.Telepathy.Account", context=0x80b5a60) at mcd-dbusprop.c:442 #19 0x45b33cae in ?? () from /usr/lib/libtelepathy-glib.so.0 #20 0x45b1f762 in ?? () from /usr/lib/libtelepathy-glib.so.0 #21 0x43a3fcf5 in invoke_object_method (message=0x80bb868, connection= 0x8057128, method=0x45bb5a78, object_info=<optimized out>, object= 0x807be78) at dbus-gobject.c:1720 ---Type <return> to continue, or q <return> to quit--- #22 object_registration_message (connection=0x8057128, message=0x80bb868, user_data=0x8072150) at dbus-gobject.c:1940 #23 0x4451e429 in ?? () from /lib/libdbus-1.so.3 #24 0x4450de67 in dbus_connection_dispatch () from /lib/libdbus-1.so.3 #25 0x43a3bdce in message_queue_dispatch (source=0x8059b98, callback=0, user_data=0x0) at dbus-gmain.c:101 #26 0x4361e62f in g_main_context_dispatch () from /lib/libglib-2.0.so.0 #27 0x4361ed70 in ?? () from /lib/libglib-2.0.so.0 #28 0x4361f3a7 in g_main_loop_run () from /lib/libglib-2.0.so.0 #29 0x49c55aff in mcd_service_run (self=0x805dc18) at mcd-service.c:193 #30 0x08048a38 in main (argc=1, argv=0xbffff2b4) at mc-server.c:78 (gdb) (In reply to comment #1) > mission-control log when the "client-pong" test app starts, what stands out is > "salut/local_ytstenut/automatic_account not Valid" This is, I believe, just a function of Salut not being fully introspected when MC loads this account. I have the same thing in the MC debug output locally, but the account becomes valid once Salut is introspected (and client-pong + client-ping work fine). So, per discussion on IRC: • I've found the crash in MC, which is triggered by trying to look up the Parameters property for an account whose CM or protocol is unavailable. Patch to follow. I'm reassigning the bug accordingly. • With yts-plugins fixed to actually compile the Salut plugin <http://cgit.freedesktop.org/ytstenut/ytstenut-plugins/commit/?id=19eac2d>, and with Salut master (with the new plugin API) launched pointing at that plugin, and with salut.manager deleted, all before launching MC, then everything works for everyone. Hooray. Created attachment 57382 [details] [review] Account: don't crash on Get('Parameters') if _dup_parameters fails If the connection manager is not installed, or is installed but doesn't have the protocol for the account, then _mcd_account_dup_parameters() returns %NULL. (As the comment I've added says, I think this is ridiculous—it's fall-out from MC not storing the types of parameters.) As a result, Get('Parameters') or GetAll() would crash, because dbus-glib would try to serialize a NULL GHashTable and blow up. (See <https://bugs.freedesktop.org/show_bug.cgi?id=44939>.) So with this patch, we handle NULL as "no parameters" for the sake of D-Bus properties. (Because this situation should only arise if the account is invalid, we also warn if _dup_parameters() returns NULL for valid accounts.) Comment on attachment 57382 [details] [review] Account: don't crash on Get('Parameters') if _dup_parameters fails Review of attachment 57382 [details] [review]: ----------------------------------------------------------------- Ship it. (In reply to comment #9) > Comment on attachment 57382 [details] [review] [review] > Account: don't crash on Get('Parameters') if _dup_parameters fails > > Review of attachment 57382 [details] [review] [review]: > ----------------------------------------------------------------- > > Ship it. Merged to 5.10 and master. Will be in 5.10.2 if that ever happens, and 5.11.0. *** Bug 45118 has been marked as a duplicate of this bug. *** |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.