service: Cleanup fix
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Tue, 12 Jul 2011 09:47:05 +0000 (11:47 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 12 Jul 2011 10:06:54 +0000 (12:06 +0200)
commit08ff3a756d879711dc409c105a531e9dd52ec0eb
tree1112b9303b21834628a44e3f63dc852cd3b0fa61
parentdc8904eb9962882e14c92c8d865f1f49fbd02d57
service: Cleanup fix

When the system shuts downn, we destroy the service_list.  The destroy
callback on the service_list sequence is service_free() which will
call the provider code. Provider wants to iterater over the
service_list we are currently freeing. This results into a crash.

#0  0x0000003edd680991 in __strlen_sse2 () from /lib64/libc.so.6
#1  0x0000003ee0a280fb in ?? () from /lib64/libdbus-1.so.3
#2  0x0000003ee0a15f19 in ?? () from /lib64/libdbus-1.so.3
#3  0x0000003ee0a19c0a in dbus_message_iter_append_basic () from /lib64/libdbus-1.so.3
#4  0x000000000043985b in append_path (value=0x6a7800, user_data=0x7fffffffe350)
    at src/service.c:121
#5  0x0000003edf65af07 in g_sequence_foreach_range () from /lib64/libglib-2.0.so.0
#6  0x0000000000439888 in __connman_service_list (iter=0x7fffffffe350, user_data=0x0)
    at src/service.c:127
#7  0x000000000045971e in connman_dbus_property_append_array (iter=0x7fffffffe440, key=
    0x472cd8 "Services", type=111, function=0x439860 <__connman_service_list>, user_data=0x0)
    at src/dbus.c:204
#8  0x000000000045990a in connman_dbus_property_changed_array (path=0x472ca0 "/", interface=
    0x472c8c "net.connman.Manager", key=0x472cd8 "Services", type=111, function=
    0x439860 <__connman_service_list>, user_data=0x0) at src/dbus.c:271
#9  0x00000000004391cd in services_changed (user_data=0x0) at src/profile.c:120
#10 0x000000000043924c in __connman_profile_changed (delayed=0) at src/profile.c:143
#11 0x000000000043f467 in service_free (user_data=0x6aab40) at src/service.c:2951
#12 0x0000003edf65aac8 in ?? () from /lib64/libglib-2.0.so.0
#13 0x0000003edf65aaa2 in ?? () from /lib64/libglib-2.0.so.0
#14 0x0000003edf65ae39 in g_sequence_free () from /lib64/libglib-2.0.so.0
#15 0x000000000044459f in __connman_service_cleanup () at src/service.c:5432
#16 0x000000000042ef5f in main (argc=1, argv=0x7fffffffe6b8) at src/main.c:412
src/service.c