mirror of
https://github.com/mmueller41/genode.git
synced 2026-01-21 12:32:56 +01:00
There was a race when the component entrypoint wanted to do 'wait_and_dispatch_one_signal'. In this function it raises a flag for the signal proxy thread to notice that the entrypoint also wants to block for signals. When the flag is set and the signal proxy wakes up with a new signal, it tried to cancel the blocking of the entrypoint. However, if the entrypoint had not reached the signal blocking at this point, the cancel blocking failed without a solution. Now, the new Kernel::cancel_next_signal_blocking call solves the problem by storing a request to cancel the next signal blocking of a thread immediately without blocking itself. Ref #2284