This makes the test case pass, validating the theory. Each `AllocReceiver` now integrates a `lib::LiveMark` instance, and the callbacks are dispatched using the corresponding `LiveMark::SafeHandle`, so that it is no longer possible to dispatch allocation messages to a defunct receiver. Furthermore, the `LiveMark` is explicitly disengaged prior to unwinding a local pool, so that no further pending requests can be handled ans dispatched concurrently. The local pool sends back all the remaining allocations via async queue to the `EngineBufferManager` Not that such a shutdown can be triggered any time, since an exception or failure might cause a worker thread to unwind, thereby destroying the thread-local `LocalMemPool` without further notice.
12 MiB
12 MiB
| The file is too large to be shown. |