Comment 4 for bug 1365481

Revision history for this message
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote :

I can reproduce it with just one SIM:

1) Start phone with PIN locked SIM in slot 0
2) ./enter-pin /ril_0 pin <code>
3) ./unlock-pin /ril_0 pin <wrong code> X 3

*and* the crash happens also in mako.

The reason of the crash is that after detection of locking of the SIM, this sequence of calls happen:

sim_pin_query_cb -> sim_free_main_state -> sim_spn_close. This function removes the full list of spn watches.

After this, SIM changes its state and the modem is notified, which moves the modem state to PRE_SIM. When that happens all atoms created in ONLINE state get destroyed. This includes the netreg atom (both mako and krillin), that tries to remove the watch for the spn it had, but spn_watches is NULL and ofono crashes at that moment.

This happens both in mako and krillin, but krillin has additional problems as the SIM atom is created when the modem is ONLINE while for mako that happens in PRE_SIM. Changes in the ofono core have been done to be able to address this.

The PR with a fix can be found at

https://github.com/rilmodem/ofono/pull/118

which includes the changes for both mako and krillin.