From: Peter Meerwald <p.meerw...@bct-electronic.com> we are seeing segfaults when connect_timeout() is called
(gdb) bt 0 0xb6f20f84 in g_str_hash () from /usr/lib/libglib-2.0.so.0 1 0xb6f20aa8 in g_hash_table_lookup_extended () from /usr/lib/libglib-2.0.so.0 2 0x0003e87c in allow_property_changed (service=0xda220) at src/service.c:4428 3 0x0003effc in dns_changed (service=0xda220) at src/service.c:1950 4 0x000454ac in service_indicate_state (service=0xda220) at src/service.c:5441 5 __connman_service_ipconfig_indicate_state (service=0xda220, new_state=<optimized out>, type=<optimized out>) at src/service.c:5806 6 0x00037c58 in set_disconnected (network=0xd3c40) at src/network.c:677 7 0x00038784 in __connman_network_disconnect (network=0xd3c40) at src/network.c:1507 8 0x000460f8 in connect_timeout (user_data=0xda220) at src/service.c:3955 9 0xb6f2c3d4 in ?? () from /usr/lib/libglib-2.0.so.0 10 0xb6f2c3d4 in ?? () from /usr/lib/libglib-2.0.so.0 Backtrace stopped: previous frame identical to this frame (corrupt stack?) the refcount goes to zero while still processing connect_timeout() --- src/service.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/service.c b/src/service.c index 921a0e4..28aff36 100644 --- a/src/service.c +++ b/src/service.c @@ -3855,6 +3855,7 @@ static void remove_timeout(struct connman_service *service) if (service->timeout > 0) { g_source_remove(service->timeout); service->timeout = 0; + connman_service_unref(service); } } @@ -3977,6 +3978,8 @@ static gboolean connect_timeout(gpointer user_data) CONNMAN_SERVICE_CONNECT_REASON_USER) __connman_service_auto_connect(CONNMAN_SERVICE_CONNECT_REASON_AUTO); + connman_service_unref(service); + return FALSE; } @@ -6026,7 +6029,7 @@ int __connman_service_connect(struct connman_service *service, if (err == -EINPROGRESS) { if (service->timeout == 0) service->timeout = g_timeout_add_seconds( - CONNECT_TIMEOUT, connect_timeout, service); + CONNECT_TIMEOUT, connect_timeout, connman_service_ref(service)); return -EINPROGRESS; } -- 1.7.10.4 _______________________________________________ connman mailing list connman@connman.net https://lists.connman.net/mailman/listinfo/connman