genode/repos/os/recipes
Norman Feske 935bb36fe4 base: fix child destruction while close requested
This patch fixes a corner case where a child is destructed while a
asynchronous close request to a sibling server is still pending.

The child immediately discarded the session ID as the end of the
close-session processing, assuming that this ID is never to be needed
again. The session-state continues to exist to handle asynchrous close
protocol with the server.

However, if the child is destructed at this point (before the server
responded to the session request), the destruction of the child would
not cover the discharging of the session state because the session state
was no longer be part of the client's ID space. So once the asynchronous
close response from the server came in, the session state contained
stale information, in particular a stale closed_callback pointer.

The patch fixes the problem by deferring the discarding of the client ID
to the point where the session state is actually destructed. So the
session of a pending close response is covered by the child destructor.

Thanks to Pirmin Duss for reporting this issue along with a test
scenario for reproducing it!

Fixes #4039
2021-03-12 12:01:38 +01:00
..
api depot: update recipe hashes 2021-02-23 12:07:18 +01:00
pkg cpu_balancer: add support to provide PD service 2021-03-12 12:01:37 +01:00
raw base: fix child destruction while close requested 2021-03-12 12:01:38 +01:00
src os: shim helper for safe routing of env sessions 2021-03-12 12:01:37 +01:00