[riot-devel] question on a possibility for a netdev deadlock

Martin martin.landsmann at haw-hamburg.de
Wed Jun 24 10:55:45 CEST 2015


Ahh, thx for clarification.

Best regards,
Martin

Am 24.06.2015 um 10:14 schrieb Daniel Krebs:
> Hi Martin,
>
> all the mentioned function are not called in interrupt context. Take a 
> look at ng_at86rf2xx.c. There you find the real ISR that sends a msg 
> to the next higher level notifying about the IRQ. Then from there 
> everything else in the driver is executed from thread context.
>
> So I guess this is unrelated to the problems you are having.
>
> Cheers,
> Daniel
>
> Am 24. Juni 2015 09:54:09 MESZ, schrieb Martin 
> <martin.landsmann at haw-hamburg.de>:
>
>     Hi all,
>
>     I've tested the ng_ stack with samr21-xpro boards using the new
>     ng_at86rf2xx driver.
>     Since I sometimes encountered hardfaults I took a look in the ISR
>     handling of the driver [1].
>
>     There we handle incoming packets when the receiver has finished the RX
>     process [2].
>     Since we are in a ISR, all other processes has been interrupted.
>
>     Now when we call _receive_data() function inside the ISR, that in turn
>     calls pktbuf handling/manipulating functions [3],
>     we try to acquire the mutex protecting the pktbuf [4].
>
>     Since we are still inside of the ISR probably the mutex is acquired by
>     someone else.
>     If true this leads to a deadlock since the ISR would wait forever to
>     acquire the mutex and never return to leave the ISR.
>
>     Additionally if we successfully acquire the mutex,
>     we could produce inconsistencies iff the protection is not performed
>     consistently.
>
>     Just wanted to ask if I'm mistaken here and missed something.
>
>     Best regards,
>     Martin
>
>     [1]
>     https://github.com/RIOT-OS/RIOT/blob/master/drivers/ng_at86rf2xx/ng_at86rf2xx_netdev.c#L671
>     [2]
>     https://github.com/RIOT-OS/RIOT/blob/master/drivers/ng_at86rf2xx/ng_at86rf2xx_netdev.c#L688
>     [3]
>     https://github.com/RIOT-OS/RIOT/blob/master/drivers/ng_at86rf2xx/ng_at86rf2xx_netdev.c#L271
>     [4]
>     https://github.com/RIOT-OS/RIOT/blob/master/sys/net/crosslayer/ng_pktbuf/ng_pktbuf.c#L81
>     ------------------------------------------------------------------------
>
>     devel mailing list
>     devel at riot-os.org
>     https://lists.riot-os.org/mailman/listinfo/devel
>
>
>
> _______________________________________________
> devel mailing list
> devel at riot-os.org
> https://lists.riot-os.org/mailman/listinfo/devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.riot-os.org/pipermail/devel/attachments/20150624/473457d3/attachment.html>


More information about the devel mailing list