Properly cleanup processes in case of conduit failing with an exception
- 主要语言
- Haskell
- 星标
- 126
- 派生
- 26
- PR 合并指标
- 30 天内没有已合并 PR
描述
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).
贡献指南
这个仓库没有索引到贡献指南
评估
这个 Issue 还没有评估数据。