Ticket #42 (assigned task)

Opened 13 months ago

Last modified 11 months ago

Reread all the scheduler synchronization, semaphore and sleep code

Reported by: dave Owned by: dave
Priority: critical Milestone: NxOS 0.2
Component: marvin Version:
Keywords: Cc:

Description

With the addition of scheduling decisions to the scheduler unlock function, Marvin's scheduler is that much more responsive and solid. However, during the first test run of the sleep tests under those conditions, the sleeping task locked up. I haven't been able to reproduce the phenomenon, but I suspect that I may have introduced a race by changing the unlocking semantics. A thorough examination of all the scheduler code is in order, just to be on the safe side.

Change History

Changed 13 months ago by dave

  • status changed from new to assigned

There is definitely a problem somewhere. When running more tasks that use sleep code and synchronization primitives a complete system lockup occurs within seconds of bootup.

Changed 11 months ago by dave

The problem goes away if the scheduler ISR disables all interrupts while it runs. Looks like a heap/stack corruption bug triggered by the interaction with other interrupt handlers.

Note: See TracTickets for help on using tickets.