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.
