On Sep 19, 2010, at 1:27 AM, Eric Decker wrote:

> 
> Under heavy loads and just the right circumstances this can cause an in use 
> receive slot to become
> unlocked causing a packet loss.  The unlocked slot will get used for a new 
> incoming packet.  The packet
> contained in the slot's msg buffer will be lost and the msg buffer reused for 
> the new incoming packet.
> 

Can you walk me through the code execution that causes this to happen? 
endPacket(SUCCESS) causes a buffer swap in SerialDispatcherP. Is the issue when 
both buffers are locked in SerialDispatcherP? I.e.,

buffer A is locked
buffer A completes, remains locked
buffer B is locked
buffer B completes, nosync unlocks A before it is ready?

I guess this suggests that there are really three states: unlocked, 
in-progress, and complete. nosync should unlock an in-progress buffer but not a 
complete one. But it would be really helpful if you could write down the exact 
code execution that makes this happen. For a task to be delayed for so long is, 
well, pretty long...

Phil
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to