aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksandermj@google.com>2025-02-03 10:18:19 +0000
committerAleksander Morgado <aleksandermj@google.com>2025-02-03 10:18:19 +0000
commit4ce23a9ebd02b84d1dcc1b98f0bd0d0f7637d039 (patch)
tree0d38537f11d8d08cf5944189c21fddeb5110379b /src
parent0743d88d4261eee18445799c552fff92debfaef1 (diff)
broadband-modem: exit with error if enable() while in unknown state
We should not assert if the modem is flagged as invalid but an outstanding enabling request is processed. Let's exit gracefully and let the object get properly disposed afterwards. (libc.so.6 - pthread_kill.c: 44) __pthread_kill_implementation (libc.so.6 - raise.c: 26) raise (libc.so.6 - abort.c: 79) abort (libglib-2.0.so.0 - gtestutils.c: 3450) g_assertion_message (libglib-2.0.so.0 - gtestutils.c: 3476) g_assertion_message_expr (ModemManager - mm-broadband-modem.c) enable (ModemManager - mm-iface-modem.c: 2340) handle_enable_auth_ready (libgio-2.0.so.0 - gtask.c: 1309) g_task_return_now (libgio-2.0.so.0 - gtask.c: 1378) g_task_return (ModemManager - mm-base-modem.c: 2011) lock_after_authorize_ready (libgio-2.0.so.0 - gtask.c: 1309) g_task_return_now (libgio-2.0.so.0 - gtask.c: 1378) g_task_return (ModemManager - mm-base-modem.c: 1841) base_modem_operation_run (ModemManager - mm-base-modem.c: 764) state_operation_ready (libgio-2.0.so.0 - gtask.c: 1309) g_task_return_now (libgio-2.0.so.0 - gtask.c: 1323) complete_in_idle_cb (libglib-2.0.so.0 - gmain.c: 3460) g_main_dispatch (libglib-2.0.so.0 - gmain.c: 4200) g_main_context_dispatch (libglib-2.0.so.0 - gmain.c: 4276) g_main_context_iterate (libglib-2.0.so.0 - gmain.c: 4479) g_main_loop_run (ModemManager - main.c: 236) main (libc.so.6 - libc_start_call_main.h: 58) __libc_start_call_main (libc.so.6 - libc-start.c: 360) __libc_start_main_impl (ModemManager + 0x000b8850) _start
Diffstat (limited to 'src')
-rw-r--r--src/mm-broadband-modem.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index 6f06b8f3..7548f223 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -12660,8 +12660,12 @@ enable (MMBaseModem *self,
/* Check state before launching modem enabling */
switch (MM_BROADBAND_MODEM (self)->priv->modem_state) {
case MM_MODEM_STATE_UNKNOWN:
- /* We should never have a UNKNOWN->ENABLED transition */
- g_assert_not_reached ();
+ /* We may have a UNKNOWN->ENABLED transition here if the request
+ * comes after having flagged the modem as invalid. Just error out
+ * gracefully. */
+ g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE,
+ "Cannot enable modem: unknown state");
+ g_object_unref (task);
break;
case MM_MODEM_STATE_FAILED: