Properly cleanup processes in case of conduit failing with an exception
- Dominant language
- Haskell
- Stars
- 126
- Forks
- 26
- PR merge metrics
- No merged PRs in 30d
Description
Tests in #76 uncovered that if an exception gets thrown in a `hatrace` conduit child processes don't get cleaned up correctly. Quoting @nh2 from discord:
> ...currently an exception being thrown and not caught from inside the Conduit will leak the tracee child process. That is because
```
genericSourceTraceForkExecvFullPathWithSink args getDetails sink = runInBoundThread $ do
childPid <- liftIO $ forkExecvWithPtrace args
```
> does not use any form of bracket.
> What this needs is the same form of bracket that the sourceProcessWithStreams (https://hackage.haskell.org/package/conduit-extra-1.3.5/docs/Data-Conduit-Process.html#v:sourceProcessWithStreams) does:
> > If an exception is raised by any of the streams, the process is terminated.
>
> It is not implemented because I haven't figured out exactly yet how to "just kill" a traced process. Maybe it's easy, but I am not sure.
> We should certainly have an issue about it (currently we don't have yet).
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.