bazel-contrib / bazel-contrib/rules_python

Zipapp doesn't forward signals (SIGTERM and friends) to the process, resulting in orphaned processes and no cleanup

オープン
#3,809 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Starlark
スター
688
フォーク
721
平均マージ
15時間 7分
マージ済み PR(30日)
76

説明

# 🐞 bug report

### Affected Rule

The issue is caused by the rule: `py_binary`

### Is this a regression?

Yes, the previous version in which this bug was not present was: ....

Unsure

### Description

A clear and concise description of the problem...

When running a `py_binary` zipapp (E.g. `bazel build --build_python_zip `) signals such as `SIGTERM` aren't forwarded to the binary itself, meaning the process doesn't get a chance to clean up.

I suspect https://github.com/bazel-contrib/rules_python/blob/25ad57c85f0094889520486cd9a5738278fd0541/python/private/zipapp/zip_main_template.py#L279-L281 is the source of the issue

## 🔬 Minimal Reproduction

Given

```
import signal

signal.signal(signal.SIGTERM, lambda _1, _2: print("SIGTERM"))

while True:
pass
```

Then `bazel run ` and a `kill -s TERM ` will print `SIGTERM`. But `bazel build --build_python_zip ` followed by a `python .zip` and a `kill -s TERM ` (of the outer process) results in the process being terminated and the underlying process being orphaned 💔

## 🔥 Exception or Error

N/A

## 🌍 Your Environment

**Operating System:**

  

x64 Ubuntu

**Output of `bazel version`:**

  

Build label: 8.6.0
Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
Build time: Thu Feb 26 19:55:20 2026 (1772135720)
Build timestamp: 1772135720
Build timestamp as int: 1772135720

**Rules_python version:**

  

1.9.0

**Anything else relevant?**

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

Start with python/private/zipapp/zip_main_template.py around lines 279-281, then reproduce the issue with the provided signal-handling Python program. Compare `bazel run` with executing the built zipapp and verify that SIGTERM reaches the underlying process and allows cleanup without leaving it orphaned.

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

評価

技術スタック
python
領域
build-system
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
55/100

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

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