neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/28061 )
Change subject: fix fallout from: 'stats: new trackers for lchan life duration' ......................................................................
fix fallout from: 'stats: new trackers for lchan life duration'
In lchan_reset(), ensure that the time_cc timer is actually inactive before nulling the entire lchan state.
This fixes an infinite-loop deadlock as described in OS#5554: - run BSC_Tests.TC_chan_act_ack_est_ind_noreply - restart the BTS process after the test is done - osmo-bsc enters infinite loop in osmo_timer_del()
The reason is that lchan_reset() is called from a different place than lchan_fsm_unused_onenter(), where the time_cc is stopped first. The timer is still active when lchan_reset() clears all lchan state.
Related: OS#5554 Change-Id: I901bb86a78d7d021c8efe751fd9d93e5956ac0e0 --- M src/osmo-bsc/lchan_fsm.c 1 file changed, 2 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/61/28061/1
diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c index d693189..4f1a2e5 100644 --- a/src/osmo-bsc/lchan_fsm.c +++ b/src/osmo-bsc/lchan_fsm.c @@ -528,6 +528,8 @@ lchan->mgw_endpoint_ci_bts = NULL; }
+ osmo_time_cc_cleanup(&lchan->active_cc); + /* NUL all volatile state */ *lchan = (struct gsm_lchan){ .ts = lchan->ts,