Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
Right now there's nothing to stop a user supplied event callback from throwing and unwinding the stack on the asio worker thread. This can lead to async filesystem operations that never complete because the stack was unwound before setting up the next async io call.
Best practice is to be really careful about what is done inside event hooks and callbacks: don't throw, sleep, or anything else that might block. I've seen a few issues pop up because a hook was made for monitoring purposes and later on stuff that was able to throw was added without realizing where the exception may end up.