Opened 7 years ago

#168 new defect

Race condition in sys_trouble can block.

Reported by: anonymous Owned by: Eric Swenson
Priority: minor Milestone:
Component: Hardcore Version:
Keywords: sys_trouble race hang Cc:

Description

If there is a problem in rcf add cpu, sometimes the sys_trouble broadcast is sent before the new CPU has got it's act together and it misses the broadcast.

The code in sys_trouble that loops until all CPUs have acknowledged the sys_touble should have code to timeout and rebroadcast; and to give up waiting if that times out.

The added CPU does not boot correctly; occasionally seen in LOCKLESS due to host thread scheduling causing start CPU handshake failure. The added CPU takes too long to signal successful startup; rcf assumes that the CPU is not running and goes to sys_trouble. The added CPU sets the flags that it has started; sys_trouble tells all of the non-bootload CPUs to die; the added CPU has not finished setting up it's interrupt handlers and misses the message. sys_troulbe loops forever waiting for it to acknowledge the die message.

Change History (0)

Note: See TracTickets for help on using tickets.