diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-07-17 09:10:43 +0200 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-07-17 09:10:43 +0200 |
| commit | f2ec263023649e596c5076df32c2d328bc9393d2 (patch) | |
| tree | 5dd86caab46e552bd2e62bf9c4fb1a7504a44db4 /results/scraper/fex/4131 | |
| parent | 63d2e9d409831aa8582787234cae4741847504b7 (diff) | |
| download | qemu-analysis-main.tar.gz qemu-analysis-main.zip | |
Diffstat (limited to 'results/scraper/fex/4131')
| -rw-r--r-- | results/scraper/fex/4131 | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/results/scraper/fex/4131 b/results/scraper/fex/4131 new file mode 100644 index 000000000..a192d8bb2 --- /dev/null +++ b/results/scraper/fex/4131 @@ -0,0 +1,13 @@ +Bear's Restaurant has race condition with deferred signal handling +[Bear's Restaurant](https://store.steampowered.com/app/1687550/Bears_Restaurant/) has a race condition with FEX's deferred signal handling. Its [game engine](https://ebitengine.org/) 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. \ No newline at end of file |