Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Interrupting ctrace leaves the running tool and its run directory behind

オープン
#188 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

@SizzleUnrlsd がすでに取り組んでいます。

2026年10月16日 から。

  • #206 @SizzleUnrlsd による — オープン

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
50/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
cpp
領域
backend, cli

調査の方向性

Start with the process spawning in include/Process/UnixProcess.hpp around lines 68-77, where the tool gets its own process group, and with the RunDirectory cleanup. Then find where POST /shutdown drains server mode so the signal path can reuse it. Done means that after Ctrl+C or SIGTERM no tool process or run directory remains, the exit codes are 130 and 143, and an integration test with a hung fake tool checks both.

索引モデルが issue の本文から書いたものです。

説明

bug severity/major

Interrupting ctrace while an external tool runs stops ctrace but not the tool: the tool keeps running, orphaned, and the run directory stays in the temporary directory.

Observed

main eba7f88, macOS 15.6.1. A fake cppcheck that sleeps 600 s is first in PATH; ctrace --input ok.c --invoke cppcheck is interrupted after 2 s:

Signal Sent to ctrace Tool process Run directory
SIGINT (Ctrl+C) the process group exits 130 within 1 s still running left behind
SIGTERM the process group exits 143 at once still running left behind
SIGINT ctrace only exits 130 within 1 s still running left behind
SIGTERM ctrace only exits 143 at once still running left behind

Each interrupted run leaves one ctrace-cppcheck-* directory in $TMPDIR. A server stopped with SIGINT or SIGTERM also exits at once, without the drain that POST /shutdown performs.

Cause

  • ctrace installs no signal handler: SIGINT and SIGTERM take their default action, so no destructor runs (RunDirectory is not removed).
  • With a timeout, which every external tool has by default, the tool is started in its own process group (include/Process/UnixProcess.hpp:68-77), so the terminal's Ctrl+C does not reach it, and nothing kills it when ctrace dies.

Fix

On SIGINT and SIGTERM, stop the running tools (SIGTERM to their process group, then SIGKILL after a grace period), let the run directories be removed, and exit with 128 + the signal. In server mode, start the same drain as POST /shutdown.

Acceptance

  • After Ctrl+C or SIGTERM during a run, no tool process and no run directory remain.
  • The exit code is 130 for SIGINT and 143 for SIGTERM.
  • An integration test interrupts a run with a hung fake tool and checks both.

Found by the resilience campaign (docs/quality/resilience.md, scenarios C31 to C34, S18, S21).

主要言語
C++
スター
5
フォーク
4
平均マージ
1時間 57分
マージ済み PR(30日)
88

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

CoreTrace/coretrace のほかの issue

CoreTrace/coretrace の issue をすべて見る

似ている issue

C++ の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。