-
Notifications
You must be signed in to change notification settings - Fork 261
[LibOS] Race conditions among thread_sleep, thread_wakeup and DkThreadResume() in append_signal() #453
Comments
The situation is actually more complicated. Upon testing program in #452, I realized that
The program executes correctly on normal Linux (it doesn't hang). This is the behavior of The program deterministically hangs on Graphene-SGX. The problem is that Thus, before fixing the race conditions as proposed by @yamahata, we should fix this issue. The fix: add the check of |
@donporter I will need more time to analyze the current pending-signal handling, what @yamahata has done already in this direction, and to propose a fix for this particular issue. In the meantime, I would like to block the merging of #452, #454, and #455. |
@yamahata I understand this. I just wanted to understand the issues with signal handling deeper and then review your PRs. I have no doubt these are legitimate fixes, just need more time to understand what's going on there. |
PR #811 solves the issue with |
There should be no more races, |
There are several race conditions among thread_sleep, thread_wakeup and DkThreadResume.
The test program at #452
shows the program stops execution.
There would be needed a way for LibOS to atomically sleep/wakeup in Pal API regarding to host signal.
The text was updated successfully, but these errors were encountered: