mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-20 14:13:09 +00:00
935bb36fe4
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 |
||
---|---|---|
.. | ||
api | ||
pkg | ||
raw | ||
src |