Bug 51031

Summary: segfault at cd_device_register_object()
Product: colord Reporter: Paul Menzel <paulepanter>
Component: daemonAssignee: Richard Hughes <richard>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: paulepanter
Version: unspecified   
Hardware: All   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Paul Menzel 2012-06-13 04:30:01 UTC
On Debian Sid/unstable with colord 0.1.21-1 installed the daemon segfaults with the backtrace pasted below [1].

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=675852

Starting program: /usr/lib/x86_64-linux-gnu/colord/colord 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff4f46700 (LWP 6176)]
[New Thread 0x7ffff4745700 (LWP 6177)]
[Thread 0x7ffff4f46700 (LWP 6176) exited]
[New Thread 0x7ffff4f46700 (LWP 6329)]

Program received signal SIGSEGV, Segmentation fault.
cd_device_register_object (device=0x69b1b0, connection=0x670020, info=0x669650, error=0x7fffffffe328) at cd-device.c:1474
1474			g_set_error (error,
#0  cd_device_register_object (device=0x69b1b0, connection=0x670020, info=0x669650, error=0x7fffffffe328) at cd-device.c:1474
#1  0x000000000041738c in cd_main_device_register_on_bus (device=0x69b1b0, error=0x7fffffffe328) at cd-main.c:399
#2  0x000000000041869f in cd_main_daemon_method_call (connection_=0x670020, sender=0x7fffec004b30 ":1.158", object_path=0x7fffec006d10 "/org/freedesktop/ColorManager", interface_name=0x7fffec007820 "org.freedesktop.ColorManager", method_name=0x7fffec006ed0 "CreateDevice", parameters=0x7fffec016b20, invocation=invocation@entry=0x6a4c60, user_data=user_data@entry=0x0) at cd-main.c:1032
#3  0x00007ffff7027915 in call_in_idle_cb (user_data=0x6a4c60) at /tmp/buildd/glib2.0-2.32.3/./gio/gdbusconnection.c:4687
#4  0x00007ffff6660205 in g_main_dispatch (context=0x636de0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:2539
#5  g_main_context_dispatch (context=context@entry=0x636de0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3075
#6  0x00007ffff6660538 in g_main_context_iterate (context=0x636de0, block=block@entry=1, dispatch=dispatch@entry=1, self=<error reading variable: Unhandled dwarf expression opcode 0xfa>) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3146
#7  0x00007ffff6660932 in g_main_loop_run (loop=0x6368b0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3340
#8  0x000000000041a25a in main (argc=1, argv=0x7fffffffe6c8) at cd-main.c:1964
#0  cd_device_register_object (device=0x69b1b0, connection=0x670020, info=0x669650, error=0x7fffffffe328) at cd-device.c:1474
        error_local = 0x0
        ret = 0
        interface_vtable = {method_call = 0x40b1a9 <cd_device_dbus_method_call>, get_property = 0x40bde9 <cd_device_dbus_get_property>, set_property = 0, padding = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
#1  0x000000000041738c in cd_main_device_register_on_bus (device=0x69b1b0, error=0x7fffffffe328) at cd-main.c:399
        ret = 0
#2  0x000000000041869f in cd_main_daemon_method_call (connection_=0x670020, sender=0x7fffec004b30 ":1.158", object_path=0x7fffec006d10 "/org/freedesktop/ColorManager", interface_name=0x7fffec007820 "org.freedesktop.ColorManager", method_name=0x7fffec006ed0 "CreateDevice", parameters=0x7fffec016b20, invocation=invocation@entry=0x6a4c60, user_data=user_data@entry=0x0) at cd-main.c:1032
        device = 0x69b1b0
        scope = CD_OBJECT_SCOPE_TEMP
        profile = 0x0
        prop_key = 0x6c28c0 "Kind"
        prop_value = 0x6c28c5 "display"
        register_on_bus = 1
        ret = 1
        device_id = 0x6c2840 "xrandr-Lenovo Group Limited"
        scope_tmp = 0x6c285c "temp"
        error = 0x0
        array = 0x0
        iter = 0x635140
        tuple = 0x0
        value = 0x0
        fd = -1
        uid = 108
        fd_handle = 0
        metadata_key = 0x0
        metadata_value = 0x0
        message = 0x10
        fd_list = 0x6a4c60
#3  0x00007ffff7027915 in call_in_idle_cb (user_data=0x6a4c60) at /tmp/buildd/glib2.0-2.32.3/./gio/gdbusconnection.c:4687
        invocation = 0x6a4c60
        vtable = <optimized out>
        registration_id = <optimized out>
        subtree_registration_id = <optimized out>
        __PRETTY_FUNCTION__ = "call_in_idle_cb"
#4  0x00007ffff6660205 in g_main_dispatch (context=0x636de0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:2539
        dispatch = 0x7ffff665df20 <g_idle_dispatch>
        was_in_call = 0
        user_data = 0x6a4c60
        callback = 0x7ffff7027810 <call_in_idle_cb>
        cb_funcs = 0x7ffff690b980
        cb_data = 0x7fffec007890
        current_source_link = {data = 0x7fffec006c40, next = 0x0}
        need_destroy = <optimized out>
        source = 0x7fffec006c40
        current = 0x630a70
        i = <optimized out>
#5  g_main_context_dispatch (context=context@entry=0x636de0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3075
No locals.
#6  0x00007ffff6660538 in g_main_context_iterate (context=0x636de0, block=block@entry=1, dispatch=dispatch@entry=1, self=<error reading variable: Unhandled dwarf expression opcode 0xfa>) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3146
        max_priority = 2147483647
        timeout = -1
        some_ready = 1
        nfds = <optimized out>
        allocated_nfds = <optimized out>
        fds = 0x68ca10
#7  0x00007ffff6660932 in g_main_loop_run (loop=0x6368b0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3340
        __PRETTY_FUNCTION__ = "g_main_loop_run"
#8  0x000000000041a25a in main (argc=1, argv=0x7fffffffe6c8) at cd-main.c:1964
        context = 0x6332e0
        error = 0x0
        immediate_exit = 0
        ret = 1
        timed_exit = 0
        owner_id = 1
        retval = 1
        options = {{long_name = 0x4205d9 "timed-exit", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7fffffffe530, description = 0x4205e4 "Exit after a small delay", arg_description = 0x0}, {long_name = 0x4205fd "immediate-exit", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7fffffffe52c, description = 0x420610 "Exit after the engine has loaded", arg_description = 0x0}, {long_name = 0x0, short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x0, description = 0x0, arg_description = 0x0}}

Thread 4 (Thread 0x7ffff4f46700 (LWP 6329)):
#0  clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:84
#1  0x00007ffff6400a80 in ?? () at pthread_create.c:217 from /lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007ffff4f46700 in ?? ()
#3  0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7ffff4745700 (LWP 6177)):
#0  0x00007ffff6140a93 in *__GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007ffff66604d4 in g_main_context_poll (n_fds=3, fds=0x684a90, timeout=-1, context=0x683010, priority=<optimized out>) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3440
#2  g_main_context_iterate (context=0x683010, block=block@entry=1, dispatch=dispatch@entry=1, self=<error reading variable: Unhandled dwarf expression opcode 0xfa>) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3141
#3  0x00007ffff6660932 in g_main_loop_run (loop=0x6849e0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3340
#4  0x00007ffff70367f6 in gdbus_shared_thread_func (user_data=0x682fe0) at /tmp/buildd/glib2.0-2.32.3/./gio/gdbusprivate.c:277
#5  0x00007ffff6682df5 in g_thread_proxy (data=0x67cf70) at /tmp/buildd/glib2.0-2.32.3/./glib/gthread.c:801
#6  0x00007ffff6400b50 in start_thread (arg=<optimized out>) at pthread_create.c:304
#7  0x00007ffff614b6dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#8  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7ffff7fd17a0 (LWP 6173)):
#0  cd_device_register_object (device=0x69b1b0, connection=0x670020, info=0x669650, error=0x7fffffffe328) at cd-device.c:1474
#1  0x000000000041738c in cd_main_device_register_on_bus (device=0x69b1b0, error=0x7fffffffe328) at cd-main.c:399
#2  0x000000000041869f in cd_main_daemon_method_call (connection_=0x670020, sender=0x7fffec004b30 ":1.158", object_path=0x7fffec006d10 "/org/freedesktop/ColorManager", interface_name=0x7fffec007820 "org.freedesktop.ColorManager", method_name=0x7fffec006ed0 "CreateDevice", parameters=0x7fffec016b20, invocation=invocation@entry=0x6a4c60, user_data=user_data@entry=0x0) at cd-main.c:1032
#3  0x00007ffff7027915 in call_in_idle_cb (user_data=0x6a4c60) at /tmp/buildd/glib2.0-2.32.3/./gio/gdbusconnection.c:4687
#4  0x00007ffff6660205 in g_main_dispatch (context=0x636de0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:2539
#5  g_main_context_dispatch (context=context@entry=0x636de0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3075
#6  0x00007ffff6660538 in g_main_context_iterate (context=0x636de0, block=block@entry=1, dispatch=dispatch@entry=1, self=<error reading variable: Unhandled dwarf expression opcode 0xfa>) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3146
#7  0x00007ffff6660932 in g_main_loop_run (loop=0x6368b0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3340
#8  0x000000000041a25a in main (argc=1, argv=0x7fffffffe6c8) at cd-main.c:1964

Thread 4 (Thread 0x7ffff4f46700 (LWP 6329)):
#0  clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:84
No locals.
#1  0x00007ffff6400a80 in ?? () at pthread_create.c:217 from /lib/x86_64-linux-gnu/libpthread.so.0
No symbol table info available.
#2  0x00007ffff4f46700 in ?? ()
No symbol table info available.
#3  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 3 (Thread 0x7ffff4745700 (LWP 6177)):
#0  0x00007ffff6140a93 in *__GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87
        _a3 = -1
        _a1 = 6834832
        resultvar = <optimized out>
        _a2 = 3
        oldtype = 0
        result = <optimized out>
#1  0x00007ffff66604d4 in g_main_context_poll (n_fds=3, fds=0x684a90, timeout=-1, context=0x683010, priority=<optimized out>) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3440
        poll_func = 0x7ffff666e2c0 <g_poll>
#2  g_main_context_iterate (context=0x683010, block=block@entry=1, dispatch=dispatch@entry=1, self=<error reading variable: Unhandled dwarf expression opcode 0xfa>) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3141
        max_priority = 2147483647
        timeout = -1
        some_ready = <optimized out>
        nfds = 3
        allocated_nfds = <optimized out>
        fds = 0x684a90
#3  0x00007ffff6660932 in g_main_loop_run (loop=0x6849e0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3340
        __PRETTY_FUNCTION__ = "g_main_loop_run"
#4  0x00007ffff70367f6 in gdbus_shared_thread_func (user_data=0x682fe0) at /tmp/buildd/glib2.0-2.32.3/./gio/gdbusprivate.c:277
        data = 0x682fe0
#5  0x00007ffff6682df5 in g_thread_proxy (data=0x67cf70) at /tmp/buildd/glib2.0-2.32.3/./glib/gthread.c:801
        thread = 0x67cf70
#6  0x00007ffff6400b50 in start_thread (arg=<optimized out>) at pthread_create.c:304
        __res = <optimized out>
        pd = 0x7ffff4745700
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140737294653184, 1666908197141687922, 140737303043088, 140737294653888, 140737354125376, 3, -1666924752575320462, -1666929256007127438}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#7  0x00007ffff614b6dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
No locals.
#8  0x0000000000000000 in ?? ()
No symbol table info available.

Thread 1 (Thread 0x7ffff7fd17a0 (LWP 6173)):
#0  cd_device_register_object (device=0x69b1b0, connection=0x670020, info=0x669650, error=0x7fffffffe328) at cd-device.c:1474
        error_local = 0x0
        ret = 0
        interface_vtable = {method_call = 0x40b1a9 <cd_device_dbus_method_call>, get_property = 0x40bde9 <cd_device_dbus_get_property>, set_property = 0, padding = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}
#1  0x000000000041738c in cd_main_device_register_on_bus (device=0x69b1b0, error=0x7fffffffe328) at cd-main.c:399
        ret = 0
#2  0x000000000041869f in cd_main_daemon_method_call (connection_=0x670020, sender=0x7fffec004b30 ":1.158", object_path=0x7fffec006d10 "/org/freedesktop/ColorManager", interface_name=0x7fffec007820 "org.freedesktop.ColorManager", method_name=0x7fffec006ed0 "CreateDevice", parameters=0x7fffec016b20, invocation=invocation@entry=0x6a4c60, user_data=user_data@entry=0x0) at cd-main.c:1032
        device = 0x69b1b0
        scope = CD_OBJECT_SCOPE_TEMP
        profile = 0x0
        prop_key = 0x6c28c0 "Kind"
        prop_value = 0x6c28c5 "display"
        register_on_bus = 1
        ret = 1
        device_id = 0x6c2840 "xrandr-Lenovo Group Limited"
        scope_tmp = 0x6c285c "temp"
        error = 0x0
        array = 0x0
        iter = 0x635140
        tuple = 0x0
        value = 0x0
        fd = -1
        uid = 108
        fd_handle = 0
        metadata_key = 0x0
        metadata_value = 0x0
        message = 0x10
        fd_list = 0x6a4c60
#3  0x00007ffff7027915 in call_in_idle_cb (user_data=0x6a4c60) at /tmp/buildd/glib2.0-2.32.3/./gio/gdbusconnection.c:4687
        invocation = 0x6a4c60
        vtable = <optimized out>
        registration_id = <optimized out>
        subtree_registration_id = <optimized out>
        __PRETTY_FUNCTION__ = "call_in_idle_cb"
#4  0x00007ffff6660205 in g_main_dispatch (context=0x636de0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:2539
        dispatch = 0x7ffff665df20 <g_idle_dispatch>
        was_in_call = 0
        user_data = 0x6a4c60
        callback = 0x7ffff7027810 <call_in_idle_cb>
        cb_funcs = 0x7ffff690b980
        cb_data = 0x7fffec007890
        current_source_link = {data = 0x7fffec006c40, next = 0x0}
        need_destroy = <optimized out>
        source = 0x7fffec006c40
        current = 0x630a70
        i = <optimized out>
#5  g_main_context_dispatch (context=context@entry=0x636de0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3075
No locals.
#6  0x00007ffff6660538 in g_main_context_iterate (context=0x636de0, block=block@entry=1, dispatch=dispatch@entry=1, self=<error reading variable: Unhandled dwarf expression opcode 0xfa>) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3146
        max_priority = 2147483647
        timeout = -1
        some_ready = 1
        nfds = <optimized out>
        allocated_nfds = <optimized out>
        fds = 0x68ca10
#7  0x00007ffff6660932 in g_main_loop_run (loop=0x6368b0) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3340
        __PRETTY_FUNCTION__ = "g_main_loop_run"
#8  0x000000000041a25a in main (argc=1, argv=0x7fffffffe6c8) at cd-main.c:1964
        context = 0x6332e0
        error = 0x0
        immediate_exit = 0
        ret = 1
        timed_exit = 0
        owner_id = 1
        retval = 1
        options = {{long_name = 0x4205d9 "timed-exit", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7fffffffe530, description = 0x4205e4 "Exit after a small delay", arg_description = 0x0}, {long_name = 0x4205fd "immediate-exit", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7fffffffe52c, description = 0x420610 "Exit after the engine has loaded", arg_description = 0x0}, {long_name = 0x0, short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x0, description = 0x0, arg_description = 0x0}}
Comment 1 Richard Hughes 2012-06-13 04:53:25 UTC
It looks like g_dbus_connection_register_object() is returning 0 and not setting a GError... Do you have any critical warnings on the console when you run /usr/libexec/colord manually?
Comment 2 Paul Menzel 2012-06-13 05:21:17 UTC
(In reply to comment #1)
> It looks like g_dbus_connection_register_object() is returning 0 and not
> setting a GError... Do you have any critical warnings on the console when you
> run /usr/libexec/colord manually?

I cannot see any critical messages when running it manually.

$ LANG=C sudo /usr/lib/i386-linux-gnu/colord/colord -v
14:18:26	Verbose debugging enabled (on console 1)
14:18:26	CdMappingDb: trying to open database '/var/lib/colord/mapping.db'
14:18:26	CdDeviceDb: trying to open database '/var/lib/colord/storage.db'
14:18:26	CdMain: acquired name: org.freedesktop.ColorManager
14:18:26	new profile (/usr/share/color/icc/pigment/CMY.icm) has no DICT tag
14:18:26	/usr/share/color/icc/pigment/CMY.icm has no profile-id nor FILE_checksum, falling back to slow MD5
14:18:26	CdProfileStore: parsed new profile '/usr/share/color/icc/pigment/CMY.icm'
14:18:26	CdProfileStore: emit added (and changed): /usr/share/color/icc/pigment/CMY.icm
14:18:27	CdMain: Adding profile /org/freedesktop/ColorManager/profiles/icc_781f6f71344167d3526631689139f109
14:18:27	CdMain: Emitting ProfileAdded(/org/freedesktop/ColorManager/profiles/icc_781f6f71344167d3526631689139f109)
14:18:27	new profile (/usr/share/color/icc/pigment/fogra27l.icm) has no DICT tag
14:18:27	/usr/share/color/icc/pigment/fogra27l.icm has no profile-id nor FILE_checksum, falling back to slow MD5
14:18:27	CdProfileStore: parsed new profile '/usr/share/color/icc/pigment/fogra27l.icm'
14:18:27	CdProfileStore: emit added (and changed): /usr/share/color/icc/pigment/fogra27l.icm
14:18:27	CdMain: Adding profile /org/freedesktop/ColorManager/profiles/icc_e729b445abc89051fe8ba7c6d8e9b127
14:18:27	CdMain: Emitting ProfileAdded(/org/freedesktop/ColorManager/profiles/icc_e729b445abc89051fe8ba7c6d8e9b127)
14:18:27	Adding metadata CMF_version=0.1.20
14:18:27	Adding metadata CMF_binary=../client/cd-create-profile
14:18:27	Adding metadata CMF_product=colord
14:18:27	CdProfileStore: parsed new profile '/usr/share/color/icc/colord/crayons.icc'
14:18:27	CdProfileStore: emit added (and changed): /usr/share/color/icc/colord/crayons.icc
14:18:27	CdMain: Adding profile /org/freedesktop/ColorManager/profiles/icc_0f39f5fa24e4d40877f5e3041a8ce646
14:18:27	CdMain: Emitting ProfileAdded(/org/freedesktop/ColorManager/profiles/icc_0f39f5fa24e4d40877f5e3041a8ce646)
14:18:27	Adding metadata CMF_version=0.1.20
14:18:27	Adding metadata CMF_binary=../client/cd-create-profile
14:18:27	Adding metadata CMF_product=colord
14:18:27	CdProfileStore: parsed new profile '/usr/share/color/icc/colord/x11-colors.icc'
14:18:27	CdProfileStore: emit added (and changed): /usr/share/color/icc/colord/x11-colors.icc
14:18:27	CdMain: Adding profile /org/freedesktop/ColorManager/profiles/icc_bb61e89d71848368bd09d855b5ce4478
14:18:27	CdMain: Emitting ProfileAdded(/org/freedesktop/ColorManager/profiles/icc_bb61e89d71848368bd09d855b5ce4478)
14:18:27	CdProfileStore: failed to open: Error opening directory '/usr/local/share/color/icc': No such file or directory
14:18:27	CdProfileStore: failed to open: Error opening directory '/Library/ColorSync/Profiles/Displays': No such file or directory
14:18:27	CdProfileStore: failed to open: Error opening directory '/var/lib/colord/icc': No such file or directory
14:18:27	CdProfileStore: failed to open: Error opening directory '/var/lib/color/icc': No such file or directory
14:18:27	CdDeviceDb: get devices
14:18:27	failed to find profile /usr/share/color/icc/Argyll/ClayRGB1998.icm for override
14:18:27	failed to find profile /usr/share/color/icc/Argyll/sRGB.icm for override
14:18:27	failed to find profile /usr/share/color/icc/Argyll/ProPhotoRGB.icc for override

But I do not know if the culprit event is triggered here.
Comment 3 melchiaros 2012-08-16 10:48:19 UTC
We have the same on Ubuntu bugtracker. In moment 80 people have registered for beeing affected.

https://bugs.launchpad.net/ubuntu/+source/colord/+bug/1021374

Veresions, stacktraces and others can be found there.
Comment 4 Christopher James Halse Rogers 2012-09-13 04:43:16 UTC
commit 84d606747142fe449f4fc410802ee41e6e213929
Author: Christopher James Halse Rogers <raof@ubuntu.com>
Date:   Thu Sep 13 13:33:27 2012 +1000

    Append usernames to dbus object paths before sanitising the object path.
    
    Usernames can contain characters not valid in a dbus object path, like ‘-’.
    It just so happens that this case exposes a bug in the GDBus documentation -
    g_dbus_connection_register_object will helpfully return 0 without setting
    error, resulting in a crash.
    
    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=51031

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.