diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-11-27 11:26:51 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-11-27 11:26:51 +0100 |
commit | e6052a4abfde3550b0b9c2229adb0bb381ac4a06 (patch) | |
tree | bf6911b61fb2d84b09af9f7e88bae1e20890dcf8 | |
parent | 674ecaa6eb356539a56d84057cc9fa7b5aeed0b1 (diff) |
icera,hso: don't disconnect() cancellable in the cancellation callback
The logic gets completely stuck when this happens:
Stack trace below:
#0 0x77661424 in __kernel_vsyscall ()
#1 0x77337c3c in pthread_cond_wait ()
#2 0x773cebaa in g_cond_wait () from /usr/lib/libglib-2.0.so.0
#3 0x774c03cc in g_cancellable_disconnect () from /usr/lib/libgio-2.0.so.0
#4 0x76955d36 in connect_cancelled_cb (cancellable=0x78e055a0, self=0x78e0b590)
#5 0x77460982 in g_cclosure_marshal_VOID__VOIDv () from /usr/lib/libgobject-2.0.so.0
#6 0x7745ed8a in ?? () from /usr/lib/libgobject-2.0.so.0
#7 0x77478435 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#8 0x77478eb3 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#9 0x774c01eb in g_cancellable_cancel () from /usr/lib/libgio-2.0.so.0
#10 0x776a0eab in mm_bearer_disconnect (self=0x78e0b590, callback=0x776c5980 <disconnect_ready>,
#11 0x776c57de in disconnect_next_bearer (ctx=0x78e12870) at mm-iface-modem-simple.c:898
#12 0x776c58d2 in disconnect_auth_ready (self=0x78df3048, res=0x78e06210, ctx=0x78e12870)
#13 0x774fed25 in g_simple_async_result_complete () from /usr/lib/libgio-2.0.so.0
#14 0x776a8c4e in authorize_ready (authp=0x78db68d0, res=0x76801638, simple=0x78e06210)
#15 0x774fed25 in g_simple_async_result_complete () from /usr/lib/libgio-2.0.so.0
#16 0x774fee3e in ?? () from /usr/lib/libgio-2.0.so.0
#17 0x7738a7a2 in ?? () from /usr/lib/libglib-2.0.so.0
#18 0x7738ce83 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#19 0x7738d248 in ?? () from /usr/lib/libglib-2.0.so.0
#20 0x7738d6eb in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#21 0x77696a7d in main (argc=2, argv=0x7fbb1f04) at main.c:158
http://code.google.com/p/chromium-os/issues/detail?id=36448
-rw-r--r-- | plugins/icera/mm-broadband-bearer-icera.c | 2 | ||||
-rw-r--r-- | plugins/option/mm-broadband-bearer-hso.c | 2 |
2 files changed, 0 insertions, 4 deletions
diff --git a/plugins/icera/mm-broadband-bearer-icera.c b/plugins/icera/mm-broadband-bearer-icera.c index ba64aa90..7dce6859 100644 --- a/plugins/icera/mm-broadband-bearer-icera.c +++ b/plugins/icera/mm-broadband-bearer-icera.c | |||
@@ -655,8 +655,6 @@ connect_cancelled_cb (GCancellable *cancellable, | |||
655 | /* Remove the cancellable | 655 | /* Remove the cancellable |
656 | * NOTE: we shouldn't remove the timeout yet. We still need to wait | 656 | * NOTE: we shouldn't remove the timeout yet. We still need to wait |
657 | * to get connected before running the explicit connection reset */ | 657 | * to get connected before running the explicit connection reset */ |
658 | g_cancellable_disconnect (ctx->cancellable, | ||
659 | self->priv->connect_cancellable_id); | ||
660 | self->priv->connect_cancellable_id = 0; | 658 | self->priv->connect_cancellable_id = 0; |
661 | 659 | ||
662 | /* Store cancelled error */ | 660 | /* Store cancelled error */ |
diff --git a/plugins/option/mm-broadband-bearer-hso.c b/plugins/option/mm-broadband-bearer-hso.c index 0ea36b6f..0db9dac8 100644 --- a/plugins/option/mm-broadband-bearer-hso.c +++ b/plugins/option/mm-broadband-bearer-hso.c | |||
@@ -495,8 +495,6 @@ connect_cancelled_cb (GCancellable *cancellable, | |||
495 | /* Remove the cancellable | 495 | /* Remove the cancellable |
496 | * NOTE: we shouldn't remove the timeout yet. We still need to wait | 496 | * NOTE: we shouldn't remove the timeout yet. We still need to wait |
497 | * to get connected before running the explicit connection reset */ | 497 | * to get connected before running the explicit connection reset */ |
498 | g_cancellable_disconnect (ctx->cancellable, | ||
499 | self->priv->connect_cancellable_id); | ||
500 | self->priv->connect_cancellable_id = 0; | 498 | self->priv->connect_cancellable_id = 0; |
501 | 499 | ||
502 | /* Store cancelled error */ | 500 | /* Store cancelled error */ |