Skip to content

plugin-manager: cancel timeouts before cancelling port probings

Instead of first requesting to cancel the port probings, and then cancelling the timeouts, we reverse the other so that timeouts are the first thing cancelled.

This allows the port probing context to be cancelled in-place, effectively also cancelling the device context in-place. The following crash should be avoided by doing this:

      0x00007c1154f16abf (libc.so.6 - pthread_kill.c: 44)   __pthread_kill_implementation
      0x00007c1154ecbf0c (libc.so.6 - raise.c: 26)  raise
      0x00007c1154eb74aa (libc.so.6 - abort.c: 79)  abort
      0x00007c11556c08a9 (libglib-2.0.so.0 - gtestutils.c: 3450)    g_assertion_message
      0x00007c11556c091d (libglib-2.0.so.0 - gtestutils.c: 3476)    g_assertion_message_expr
      0x00005897d1ed6e7b (ModemManager - mm-plugin-manager.c: 805)  device_context_unref
      0x00005897d1ed6ab9 (ModemManager - mm-plugin-manager.c: 163)  common_async_context_free
      0x00005897d1ed5dd6 (ModemManager - mm-plugin-manager.c: 1136) port_context_run_ready
      0x00007c1155550e86 (libgio-2.0.so.0 - gtask.c: 1309)  g_task_return_now
      0x00007c115554fe50 (libgio-2.0.so.0 - gtask.c: 1378)  g_task_return
      0x00007c115555047b (libgio-2.0.so.0 - gtask.c: 2022)  g_task_return_new_error
      0x00005897d1ed581a (ModemManager - mm-plugin-manager.c: 296)  port_context_complete
      0x00005897d1ed6259 (ModemManager - mm-plugin-manager.c)       plugin_supports_port_ready
      0x00007c1155550e86 (libgio-2.0.so.0 - gtask.c: 1309)  g_task_return_now
      0x00007c1155550eb9 (libgio-2.0.so.0 - gtask.c: 1323)  complete_in_idle_cb
      0x00007c115569c91b (libglib-2.0.so.0 - gmain.c: 3460) g_main_dispatch
      0x00007c115569c91b (libglib-2.0.so.0 - gmain.c: 4200) g_main_context_dispatch
      0x00007c115569cc37 (libglib-2.0.so.0 - gmain.c: 4276) g_main_context_iterate
      0x00007c115569ceb5 (libglib-2.0.so.0 - gmain.c: 4479) g_main_loop_run
      0x00005897d1e715bf (ModemManager - main.c: 236)       main
      0x00007c1154eb7705 (libc.so.6 - libc_start_call_main.h: 58)   __libc_start_call_main
      0x00007c1154eb77c1 (libc.so.6 - libc-start.c: 360)    __libc_start_main_impl
      0x00005897d1e70f10 (ModemManager + 0x000b3f10)        _start
      0x00007ffd5acc5057
Edited by Aleksander Morgado

Merge request reports

Loading