pussuw commented on issue #14593:
URL: https://github.com/apache/nuttx/issues/14593#issuecomment-2458981097

   > when an interrupt occurs, g_cpu_nestcount is used as the recursive counter 
because context switching may happen and this_task() will change, and 
tcp->irqcount cannot be used.
   
   Yes this much I was able to figure out when I tried to remove 
g_cpu_nestcount.
   
   There is still a hole somewhere in the acquire / release logic as I can see 
random debugasserts and deadlocks which happen when:
   - CPUx tries to take the big kernel lock from ISR
   - CPUy tries to take the big kernel lock from thread
   
   And very likely a context switch is what triggers the issue. This happens 
more often under high load scenarios, like system bootup. In our case the 
system boot uses a lot of CPU, it also spawns a lot of processes that start, 
run and exit almost immediately.
   
   I'll keep investigating.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to