On Mon, Nov 12, 2012 at 10:05:07PM +0100, Sylvain Munaut wrote:
> Hi,
> 
> > I am now rebasing and start with testing just the SMC rework and I have seen
> > a crash in the cp_timer_expired routine (NULL pointer + small offset). I 
> > have
> > not seen how this can happen because the smc instance should be cleared at 
> > the
> > end of an instance.. I will continue to test with the modem bank and improve
> > the debugging (sadly an ABI incompatible change to the SMC/SMR structure).
> 
> btw, how easy are those to reproduce ?

the crash with the entire patch set is 'easy' to reproduce. I have four devices
that SMS to each other but I am confident that only two can cause the same 
crash.

the cp_timer_expired is more difficult to reproduce but I think I know how it
can happen.

1.) cp_timer expired..
2.)
    nmsg = gsm411_msgb_alloc();
    inst->mn_recv(inst, GSM411_MNSMS_ERROR_IND, nmsg);
    msgb_free(nmsg);
3.) 
        case GSM411_MNSMS_ERROR_IND:
                if (gh)
                        DEBUGP(DLSMS, "MNSMS-ERROR-IND, cause %d (%s)\n",
                                gh->data[0],
                                get_value_string(gsm411_cp_cause_strs,
                                gh->data[0]));
                else
                        DEBUGP(DLSMS, "MNSMS-ERROR-IND, no cause\n");
                trans_free(trans);

at this point the smc is gone... so thanks for asking to make me reflect on the
crash. I wonder if I shouldn't just put the smc/smr patch together and debug the
result.

 

> 
> Do you need an automated setup or just sending a couple SMS using a
> phone can trigger them ?

I think it helps that the Wavecom module of our modem bank is generally not 
happy
with our SMS protocol handling and I end up in all the error paths.

Reply via email to