nh2 / nh2/hatrace

Properly cleanup processes in case of conduit failing with an exception

未关闭
#80 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
enhancement
主要语言
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 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。