[sugar] gabble segfaults and how to reproduce them

Dan Williams dcbw at redhat.com
Wed Apr 11 23:57:24 EDT 2007


After doing the following, suggested by daf on IRC:

darcs pull http://projects.collabora.co.uk/~monkey/telepathy-gabble-olpc/
darcs pull http://projects.collabora.co.uk/~monkey/telepathy-gabble-olpc-rob-review/

I still get a segfault on activity changes:

#0  0x0808beeb in tp_handle_inspect (self=0x0, handle=3) at handle-repo.c:429
#1  0x0806a4f3 in activity_info_get_room (info=<value optimized out>) at conn-olpc.c:53
#2  0x0806af3d in decrement_contacts_activities_list_foreach (info=0x985dd60, conn=0x9847800) at conn-olpc.c:115
#3  0x00350c71 in IA__g_slist_foreach (list=0x984e628, func=0x806af10 <decrement_contacts_activities_list_foreach>, user_data=0x9847800) at gslist.c:468
#4  0x0806c384 in extract_activities (conn=0x9847800, msg=0x9861318) at conn-olpc.c:624
#5  0x0806c5fa in get_activities_reply_cb (conn=0x9847800, sent_msg=0x98523d8, reply_msg=0x9851e78, object=0x0, user_data=0x9850308) at conn-olpc.c:707
#6  0x0804da8e in message_send_reply_cb (handler=0x98525b0, connection=0x9847568, reply_msg=0x9851e78, user_data=0x98586a8) at gabble-connection.c:893
#7  0x0090f990 in _lm_message_handler_handle_message (handler=0x3, connection=0x9847568, message=0x9851e78) at lm-message-handler.c:47
#8  0x0090d26f in connection_incoming_dispatch (source=0x98472b0, callback=0, user_data=0x0) at lm-connection.c:288
#9  0x003390c2 in IA__g_main_context_dispatch (context=0x983da80) at gmain.c:2045
#10 0x0033c08f in g_main_context_iterate (context=0x983da80, block=1, dispatch=1, self=0x98421d8) at gmain.c:2677
#11 0x0033c439 in IA__g_main_loop_run (loop=0x983c4d8) at gmain.c:2881
#12 0x080901c3 in tp_run_connection_manager (prog_name=0x8097fe3 "telepathy-gabble", version=0x8097fdb "0.5.7.1", construct_cm=0x804d000 <construct_cm>, 
    argc=1, argv=0xbff43a64) at run.c:237
#13 0x0804cfe8 in main (argc=1, argv=0xbff43a64) at gabble.c:48

I added a test mode to the presence service.  To reproduce this bug and
generally exercise the PS and gabble, you can do the following after
doing a git pull of sugar:

1) start sugar with normal "./sugar-jhbuild run"
2) get another terminal
3) find the pid of telepathy-gabble, and 'gdb attach <pid>'
4) get another terminal
5) get the DBus session bus address from ~/.sugar/default/logs/session.info
6) export DBUS_SESSION_BUS_ADDRESS=<address from #2>
7) ./sugar-jhbuild shell
8) build/bin/sugar-presence-service 1
<wait for the key to generate and the test PS to start>
<wait for the gabble segfault in gdb>

The test presence service generates new buddy info the first time you
use each number, then uses that info every subsequent time you pass that
number.  It will attempt to change one property every 10 seconds from
the set of [nickname, avatar, color, current activity].  You should be
able to see the fake buddy on the Mesh View of Sugar too.

The test buddy will log output to
~/.sugar/default/logs/test-X-presenceservice.log where X is the number
you pass to sugar-presence-service when invoking it.  Normal sugar
output still goes to ~/.sugar/default/logs/presenceservice.log, so you
can inspect both logs independently.

It's a bit hard to use LM_DEBUG with tp-gabble right now under _sugar_,
because sugar makes its own DBus session bus and launches gabble on
that.  However if you don't want to have Sugar in the mix, you can point
your /usr/share/dbus-1/services/org.freedesktop.blahblah.Gabble service
to the one in sugar-jhbuild/build/bin/telepathy-gabble, launch that
using your normal session bus, and then just run two
sugar-presence-service instances with the arguments "1" and "2".  That
should work as well and you could use LM_DEBUG to figure out gabble
issues too.

Dan




More information about the Sugar mailing list