Closed snoyberg closed 10 years ago
I have pushed a change to experimental
which addresses this. I am closing this issue for now, although the fix might not be optimal (see commit message).
I thought this was fixed but it still fails occasionally.
I've tested the new version both under 7.4 and 7.8 and it works consistently this time.
Looks right to me. I've reinstated our timeout
call around runStmt
, and have not seen any issues. Thanks guys!
@snoyberg Note that runStmt
should be treated as a resource allocation function and you therefore probably want to bracket it. As part of #231 I fixed it so that it will deallocate the child process if it gets interrupted, but once it leaves the scope of runStmt
you need to make sure that you don't leak the runActions
(with forceCancel
or interrupt
serving as deallocation function).
Thanks for the heads-up @edsko, I've created an issue to make sure I check the code for this: https://github.com/fpco/fpco/issues/3865
In the example below, I call
runStmt
twice. The first call is interrupted by an async exception due to the too short timeout. The second call then reliably throws that same exception.I discovered this since our deadlock workaround code includes a timeout call, which in fact triggers this problem.