You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix a schedule() race by postponing preemption enablement to inside the dispatch closure
This resolves a situation where a preemptible function could time out before performing the
fun.take() inside said closure. Such a case was erroneous because the dispatch closure itself is
passed between stacks as a raw pointer via BOOTSTRAP, but it lives on the original stack until the
aforementioned move! This was found because a later resume() sometimes segfaulted within memmove().
After this change, release builds of the resume_completion test appear to be stable with and without
global variable interpositioning. This was tested down to a preemption quantum of 5 μs.
0 commit comments