Bug 46170 - segfault with gdbus library talking to libdbus-glib daemon
Summary: segfault with gdbus library talking to libdbus-glib daemon
Status: RESOLVED FIXED
Alias: None
Product: accountsservice
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Matthias Clasen
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-02-16 06:43 UTC by Frederic Peters
Modified: 2012-02-16 09:49 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
lib: change loop iteration idiom (4.00 KB, patch)
2012-02-16 09:27 UTC, Ray Strode [halfline]
Details | Splinter Review

Description Frederic Peters 2012-02-16 06:43:19 UTC
gnome-shell will crash when running with accountsservice current master (5fc9a51), if the accountsservice daemon is the system one (not ported to gdbus).

(gdb) bt full
#0  0x00007f1f270b96c3 in g_str_hash (v=0x0) at ghash.c:1730
        p = 0x0
        h = 5381
#1  0x00007f1f270b7c1d in g_hash_table_lookup_node (hash_table=0x30ca240, key=0x0, hash_return=0x7fff15f52678)
    at ghash.c:401
        node_index = 32543
        node_hash = 655272149
        hash_value = 32767
        first_tombstone = 0
        have_tombstone = 0
        step = 0
#2  0x00007f1f270b8bde in g_hash_table_lookup (hash_table=0x30ca240, key=0x0) at ghash.c:1074
        node_index = 0
        node_hash = 51381088
        __PRETTY_FUNCTION__ = "g_hash_table_lookup"
#3  0x00007f1f1c32e433 in add_new_user_for_object_path (object_path=0x0, manager=0x2de7180)
    at act-user-manager.c:719
        user = 0x3100360
#4  0x00007f1f1c32edf6 in on_list_cached_users_finished (object=0x13d4180, result=0x30fa6a0, data=0x2de7180)
    at act-user-manager.c:986
        user = 0x7f1f180b3970
        i = 0x307fb38
        proxy = 0x13d4180
        manager = 0x2de7180
        users = 0x307fb10
        error = 0x0
#5  0x00007f1f2785695a in g_simple_async_result_complete (simple=0x30fa6a0) at gsimpleasyncresult.c:744
        current_source = 0x7f1f180882e0
        current_context = 0x1387e10
        __PRETTY_FUNCTION__ = "g_simple_async_result_complete"
#6  0x00007f1f278d1f0f in reply_cb (connection=0x26c6a10, res=0x333c2a0, user_data=0x30fa6a0) at gdbusproxy.c:2612
        simple = 0x30fa6a0
        value = 0x324d610
        error = 0x0
        fd_list = 0x0
#7  0x00007f1f2785695a in g_simple_async_result_complete (simple=0x333c2a0) at gsimpleasyncresult.c:744
        current_source = 0x7f1f180882e0
        current_context = 0x1387e10
        __PRETTY_FUNCTION__ = "g_simple_async_result_complete"
#8  0x00007f1f278c14a2 in g_dbus_connection_call_done (source=0x26c6a10, result=0x3354d20, user_data=0x331cc90)
    at gdbusconnection.c:5300
        simple = 0x333c2a0
        connection = 0x26c6a10
        state = 0x331cc90
        error = 0x0
        reply = 0x324b5e0
#9  0x00007f1f2785695a in g_simple_async_result_complete (simple=0x3354d20) at gsimpleasyncresult.c:744
        current_source = 0x7f1f180882e0
        current_context = 0x1387e10
        __PRETTY_FUNCTION__ = "g_simple_async_result_complete"
#10 0x00007f1f278569a6 in complete_in_idle_cb (data=0x3354d20) at gsimpleasyncresult.c:756
        simple = 0x3354d20
#11 0x00007f1f270cd565 in g_idle_dispatch (source=0x7f1f180882e0, callback=0x7f1f27856973 <complete_in_idle_cb>, 
    user_data=0x3354d20) at gmain.c:4629
No locals.
#12 0x00007f1f270cae3b in g_main_dispatch (context=0x1387e10) at gmain.c:2510
        dispatch = 0x7f1f270cd519 <g_idle_dispatch>
        was_in_call = 0
        user_data = 0x3354d20
        callback = 0x7f1f27856973 <complete_in_idle_cb>
        cb_funcs = 0x7f1f271bce20
        cb_data = 0x7f1f1800f980
        need_destroy = 20478688
        current_source_link = {data = 0x7f1f180882e0, next = 0x0}
        source = 0x7f1f180882e0
        current = 0x26be720
        i = 0
        __PRETTY_FUNCTION__ = "g_main_dispatch"
#13 0x00007f1f270cbafc in g_main_context_dispatch (context=0x1387e10) at gmain.c:3047
No locals.
#14 0x00007f1f270cbcdf in g_main_context_iterate (context=0x1387e10, block=1, dispatch=1, self=0x26be2f0)
    at gmain.c:3118
        max_priority = 2147483647
        timeout = 909
        some_ready = 1
        nfds = 12
        allocated_nfds = 12
        fds = 0x13c5e60
#15 0x00007f1f270cc108 in g_main_loop_run (loop=0x1388070) at gmain.c:3312
        self = 0x26be2f0
        __PRETTY_FUNCTION__ = "g_main_loop_run"
#16 0x00007f1f2aac8551 in meta_run () at core/main.c:555
        log_domains = {0x0, 0x7f1f2ab26fde "mutter", 0x7f1f2ab27172 "Gtk", 0x7f1f2ab27176 "Gdk", 
          0x7f1f2ab2717a "GLib", 0x7f1f2ab2717f "Pango", 0x7f1f2ab27185 "GLib-GObject", 0x7f1f2ab27192 "GThread"}
        i = 8
#17 0x000000000040231f in main (argc=1, argv=0x7fff15f52c68) at main.c:352
        ctx = 0x1378260
        error = 0x0
        session_type = SHELL_SESSION_USER
        ecode = 0
        sender = 0x26d5400
Comment 1 Ray Strode [halfline] 2012-02-16 09:27:05 UTC
Created attachment 57167 [details] [review]
lib: change loop iteration idiom

Some of the recent code for iterating through
the results of dbus code uses i when isn't an
integer.  I find that really hard to wrap my head
around, and it appears to be causing crashes.

(I believe the loop condition should be *i not i)

This commit changes things up to be, in my opinion,
clearer.
Comment 2 Ray Strode [halfline] 2012-02-16 09:28:04 UTC
i'm going to close this out, but REOPEN/let me know if it still causes problems.
Comment 3 Frederic Peters 2012-02-16 09:49:25 UTC
I confirm it fixed my crash in gnome-shell; thanks!


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.