Closed romange closed 1 year ago
Patch coverage: 86.20%
and project coverage change: -0.04%
:warning:
Comparison is base (
a601dd6
) 76.32% compared to head (cf75c3e
) 76.28%.
:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the GitHub App Integration for your organization. Read more.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
Specifically, fix #130. The code that crashed makes sure that a fiber is not in remote_ready queue when it wakes up: it yields if it is, and thus allows the dispatcher to empty the remote queue and pull the active fiber from there.
The code crashes because after the Yield call, it appears that the fiber is still in the remote queue. Based on the code inspection, it seems unprobable that a dispatcher won't empty the remote queue, therefore I suspect that remote queue was corrupted in the first place.
This fix focuses on ScheduleFromRemote (producer sider) that before that did not protect against concurrent calls for the same fiber. It was partly justified because ScheduleFromRemote is usually called from the WaitQueue code under lock. However, there are other cases that can call this function, and maybe they corrupted the queue.
In addition, we removed the epoch based notifications which did not contribute to the correctness.