[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#840618: closed by Samuel Thibault <sthibault@debian.org> (Bug#840618: fixed in at-spi2-core 2.22.0-3)



On Tue, Nov 01, 2016 at 12:06:06AM +0000, Debian Bug Tracking System wrote:
>    * patches/register-client-early: Register at-spi-bus-launcher early, to
>      avoid deadlock with gnome-session (Closes: Bug#840618).

Doesn't this patch break registering with the session? Now you call
register_client before sm_proxy is set - how is that supposed to work?

It leads to this crash for me on i386, ppc64el, armhf (in gspell's testsuite),
because there is no error checking in register_client() for sm_proxy being
unset and therefore not being able to perform any operations on it.

> (gdb) run
> Starting program: /usr/lib/at-spi2-core/at-spi-bus-launcher 
> /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_GB.UTF-8)
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
> [New Thread 0xb7755b40 (LWP 23117)]
> [New Thread 0xb6f54b40 (LWP 23118)]
> [New Thread 0xb65ffb40 (LWP 23119)]
> [New Thread 0xb5dfeb40 (LWP 23120)]
> 
> (process:23113): GLib-GIO-CRITICAL **: g_dbus_proxy_call_sync_internal: assertion 'G_IS_DBUS_PROXY (proxy)' failed
> 
> (process:23113): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
> 
> (process:23113): GLib-CRITICAL **: g_variant_get_va: assertion 'value != NULL' failed
> 
> (process:23113): GLib-CRITICAL **: g_variant_unref: assertion 'value != NULL' failed
> 
> (process:23113): GLib-GIO-CRITICAL **: g_dbus_proxy_new_for_bus: assertion 'g_variant_is_object_path (object_path)' failed
> 
> Thread 1 "at-spi-bus-laun" received signal SIGSEGV, Segmentation fault.
> malloc_printerr (action=3, str=0xb7aa352a "free(): invalid pointer", ptr=0xb7d90000, ar_ptr=0x49524156) at malloc.c:5033
> 5033	malloc.c: No such file or directory.
> (gdb) bt
> #0  0xb79b1a7b in malloc_printerr (action=3, str=0xb7aa352a "free(): invalid pointer", ptr=0xb7d90000, ar_ptr=0x49524156) at malloc.c:5033
> #1  0xb79b23c6 in _int_free (av=0x49524156, p=0xb7d8fff8, have_lock=0) at malloc.c:3902
> #2  0xb7cb19f0 in g_free (mem=0xb7d90000) at ././glib/gmem.c:189
> #3  0x08049d0a in register_client (app=app@entry=0x804f0e0) at at-spi-bus-launcher.c:198
> #4  0x08049d53 in session_manager_connect (app=0x804f0e0) at at-spi-bus-launcher.c:247
> #5  0x08049d53 in on_name_acquired (connection=0x8061048 [GDBusConnection], name=0x805d790 "org.a11y.Bus", user_data=0x804f0e0) at at-spi-bus-launcher.c:658
> #6  0xb7eafbab in actually_do_call (client=<optimized out>, connection=<optimized out>, call_type=<optimized out>) at ././gio/gdbusnameowning.c:163
> #7  0xb7eafce4 in do_call (client=0x805d6e0, call_type=CALL_TYPE_NAME_ACQUIRED) at ././gio/gdbusnameowning.c:215
> #8  0xb7eaffc7 in request_name_cb (source_object=0x8061048 [GDBusConnection], res=0x805e960, user_data=0x805d6e0) at ././gio/gdbusnameowning.c:327
> #9  0xb7e71b70 in g_task_return_now (task=task@entry=0x805e960 [GTask]) at ././gio/gtask.c:1121
> #10 0xb7e72292 in g_task_return (task=0x805e960 [GTask], type=<optimized out>) at ././gio/gtask.c:1179
> #11 0xb7ea79c0 in g_dbus_connection_call_done (source=0x8061048 [GDBusConnection], result=0x805e9e0, user_data=0x805e960) at ././gio/gdbusconnection.c:5708
> #12 0xb7e71b70 in g_task_return_now (task=task@entry=0x805e9e0 [GTask]) at ././gio/gtask.c:1121
> #13 0xb7e71bbb in complete_in_idle_cb (task=0x805e9e0) at ././gio/gtask.c:1135
> #14 0xb7cac39b in g_main_dispatch (context=0x8054470) at ././glib/gmain.c:3203
> #15 0xb7cac39b in g_main_context_dispatch (context=0x8054470) at ././glib/gmain.c:3856
> #16 0xb7cac789 in g_main_context_iterate (context=0x8054470, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ././glib/gmain.c:3929
> #17 0xb7cacb39 in g_main_loop_run (loop=0x8054530) at ././glib/gmain.c:4125
> #18 0x0804989c in main (argc=<optimized out>, argv=<optimized out>) at at-spi-bus-launcher.c:841

I don't know what the initial problem was - why was the bus launcher failing to
register with gnome-session? Whatever the reason is, this fix doesn't seem to
be quite right to me and I think it would be better to attack the cause
directly - that is, by poking at at-spi-bus-launcher in those 90 seconds
and finding out why it's hitting this timeout.

Message #27 has these same criticals FWIW.

-- 
Iain Lane                                  [ iain@orangesquash.org.uk ]
Debian Developer                                   [ laney@debian.org ]
Ubuntu Developer                                   [ laney@ubuntu.com ]

Attachment: signature.asc
Description: PGP signature


Reply to: