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
Bear's Restaurant has a race condition with FEX's deferred signal handling. Its game engine is based on golang, which sends SIGURG /very/ quickly for doing preemption to ensure thread fairness.
A couple of things to fix in FEX's deferred signal handling.
If its not a realtime signal, then these shouldn't be queued and instead just set in a mask of available signals.
Linux doesn't queue non-RT signals, expecting many non-RT signals to be lost rather than queued
FEX should block the sa_mask in the signal handler of the signal getting deferred, to ensure it doesn't receive anymore of that signal.
This would ensure FEX doesn't overrun its small signal queue, which can typically result in crashes.
Make sure to restore signal mask once actually handling the signal
I don't have time to implement these fixes right now but I needed a tracking issue to remember it.
I originally wanted to test this engine to see it break under Asahi Linux, but apparently it uses a new enough version of golang that it no longer hits the VDSO bug, might need to try an older game using this engine to see the Asahi breakage.
The text was updated successfully, but these errors were encountered:
Bear's Restaurant has a race condition with FEX's deferred signal handling. Its game engine is based on golang, which sends SIGURG /very/ quickly for doing preemption to ensure thread fairness.
A couple of things to fix in FEX's deferred signal handling.
sa_mask
in the signal handler of the signal getting deferred, to ensure it doesn't receive anymore of that signal.I don't have time to implement these fixes right now but I needed a tracking issue to remember it.
I originally wanted to test this engine to see it break under Asahi Linux, but apparently it uses a new enough version of golang that it no longer hits the VDSO bug, might need to try an older game using this engine to see the Asahi breakage.
The text was updated successfully, but these errors were encountered: