It seems when a modem process terminates (oom_killer, faulty hardware, admin error, etc.) the main process just keeps running patiently for ever. Ie the system stops responding to incoming messages at all. AFAICS there is no configuration option to change this. Likewise when the main process dies in one of the hard ways, the modem processes keep running, though I guess this is a lesser problem.
ATM I use an alarm handler to terminate the main process in such cases, but this get's messy, when there are multiple instances of smsd running.
I also note that the default init script 'sms3' uses some quirky combinations of ps, grep and awk to find all processes that need killing. That can easily go wrong when there are other processes with unlucky names, running. (I had to rename my alarm hander from smsd_alarmhandler to something else, because it kept killing itself via the init script ...)
I'm not sure what the best solution is. A few ideas for features that might help:
* an option to make the main process terminate when a modem process terminates
* an option to just restart a terminated modem process
* modem processes terminating by default when the main process is gone
* a pid file per modem process or some other reliable way to get to pids
In case you are wondering: I'm not doing anything fancy: Just trying to improve the OpenWRT package of smstools3 and thinking of possible use cases.