You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A dirty hack that is being used right now is that runtime.Context stack-allocates a fixed-sized [1024]u8 to serve as the stack for the invocation of async cancellation callbacks.
For all the cancellation callbacks in Rheia so far, the hack works just fine. Though, it would be good to have the stacks of all async cancellation callbacks heap-allocated upon calling runtime.Context.register().
The alternative is to explicitly disallow async cancellation callbacks. The only cancellation callbacks that are async right now are the ones used to cancel pending I/O requests to io_uring. It might be plausible to make I/O cancellation not be async by having all requests to cancel some I/O request R queue R into a linked list which is flushed on every event loop tick iteration.
This issue is blocking the inclusion of 'context hierarchies' into Rheia, which is why all code in Rheia right now avoids creating child contexts that are canceled when a parent context is canceled (by registering a cancelation callback that calls child_context.cancel() to the parent context).
The text was updated successfully, but these errors were encountered:
A dirty hack that is being used right now is that runtime.Context stack-allocates a fixed-sized [1024]u8 to serve as the stack for the invocation of async cancellation callbacks.
For all the cancellation callbacks in Rheia so far, the hack works just fine. Though, it would be good to have the stacks of all async cancellation callbacks heap-allocated upon calling runtime.Context.register().
The alternative is to explicitly disallow async cancellation callbacks. The only cancellation callbacks that are async right now are the ones used to cancel pending I/O requests to io_uring. It might be plausible to make I/O cancellation not be async by having all requests to cancel some I/O request R queue R into a linked list which is flushed on every event loop tick iteration.
This issue is blocking the inclusion of 'context hierarchies' into Rheia, which is why all code in Rheia right now avoids creating child contexts that are canceled when a parent context is canceled (by registering a cancelation callback that calls child_context.cancel() to the parent context).
The text was updated successfully, but these errors were encountered: