python / python/cpython

Python cProfile run gets SIGSEGV due to stack overrun

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

まだ誰も着手していません。

extension-modules topic-profiling type-crash
主要言語
Python
スター
77.2k
フォーク
36k
PR マージ指標
PR 指標を取得中

説明

Crash report

What happened?

Running python -m cProfile .... on my program results in the following crash:

Thread 0 Crashed:
0      _lsprof.cpython-310-darwin.so 	       0x104f01974 RotatingTree_Enum + 0
1      _lsprof.cpython-310-darwin.so 	       0x104f019a4 RotatingTree_Enum + 48
-------- RECURSION 1, LEVEL 349252
2      _lsprof.cpython-310-darwin.so 	       0x104f019a4 RotatingTree_Enum + 48
-------- RECURSION 1, LEVEL 349251
3      _lsprof.cpython-310-darwin.so 	       0x104f019a4 RotatingTree_Enum + 48
-------- RECURSION 1, LEVEL 349250
--------
-------- ELIDED 349246 LEVELS OF RECURSION THROUGH 0x104f019a4 RotatingTree_Enum + 48
--------
349252 _lsprof.cpython-310-darwin.so 	       0x104f019a4 RotatingTree_Enum + 48
-------- RECURSION 1, LEVEL 3
349253 _lsprof.cpython-310-darwin.so 	       0x104f019a4 RotatingTree_Enum + 48
-------- RECURSION 1, LEVEL 2
349254 _lsprof.cpython-310-darwin.so 	       0x104f019a4 RotatingTree_Enum + 48
-------- RECURSION 1, LEVEL 1
349255 _lsprof.cpython-310-darwin.so 	       0x104f00b88 _lsprof_Profiler_getstats + 148
349256 libpython3.10.dylib           	       0x105073c40 method_vectorcall_FASTCALL_KEYWORDS_METHOD + 168
349257 libpython3.10.dylib           	       0x10513ce48 call_function + 472
349258 libpython3.10.dylib           	       0x1051379b0 _PyEval_EvalFrameDefault + 7248
349259 libpython3.10.dylib           	       0x105135c5c _PyEval_Vector + 140
-------- RECURSION 2, LEVEL 10
349260 libpython3.10.dylib           	       0x10513ce48 call_function + 472
349261 libpython3.10.dylib           	       0x1051379b0 _PyEval_EvalFrameDefault + 7248
349262 libpython3.10.dylib           	       0x105135c5c _PyEval_Vector + 140
-------- RECURSION 2, LEVEL 9
349263 libpython3.10.dylib           	       0x10513ce48 call_function + 472
349264 libpython3.10.dylib           	       0x1051379b0 _PyEval_EvalFrameDefault + 7248
349265 libpython3.10.dylib           	       0x105135c5c _PyEval_Vector + 140
-------- RECURSION 2, LEVEL 8
--------
-------- ELIDED 4 LEVELS OF RECURSION THROUGH 0x105135c5c _PyEval_Vector + 140
--------
349278 libpython3.10.dylib           	       0x10513ce48 call_function + 472
349279 libpython3.10.dylib           	       0x105139880 _PyEval_EvalFrameDefault + 15136
349280 libpython3.10.dylib           	       0x105135c5c _PyEval_Vector + 140
-------- RECURSION 2, LEVEL 3
349281 libpython3.10.dylib           	       0x105135bbc PyEval_EvalCode + 108
349282 libpython3.10.dylib           	       0x105132664 builtin_exec + 720
349283 libpython3.10.dylib           	       0x1050afc04 cfunction_vectorcall_FASTCALL + 280
349284 libpython3.10.dylib           	       0x10513ce48 call_function + 472
349285 libpython3.10.dylib           	       0x105139880 _PyEval_EvalFrameDefault + 15136
349286 libpython3.10.dylib           	       0x105135c5c _PyEval_Vector + 140
-------- RECURSION 2, LEVEL 2
349287 libpython3.10.dylib           	       0x10513ce48 call_function + 472
349288 libpython3.10.dylib           	       0x105139880 _PyEval_EvalFrameDefault + 15136
349289 libpython3.10.dylib           	       0x105135c5c _PyEval_Vector + 140
-------- RECURSION 2, LEVEL 1
349290 libpython3.10.dylib           	       0x105199d9c pymain_run_module + 200
349291 libpython3.10.dylib           	       0x105199578 Py_RunMain + 840
349292 libpython3.10.dylib           	       0x105199c28 pymain_main + 324
349293 libpython3.10.dylib           	       0x105199cc8 Py_BytesMain + 40
349294 dyld                          	       0x18c1c5d54 start + 7184
CPython versions tested on:

3.10

Operating systems tested on:

macOS

Output from running 'python -VV' on the command line:

Python 3.10.18 (main, Aug 7 2025, 15:26:36) [Clang 17.0.0 (clang-1700.0.13.3)]

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

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

はじめの一歩

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

調査の方向性

macOS の SIGSEGV トレースを報告された症状として、RotatingTree_Enum と _lsprof_Profiler_getstats 周辺の cProfile および _lsprof の実装から調査を始めます。Python 3.10 の cProfile 実行を再現するプログラムを見つけ、その後、スタックオーバーフローやクラッシュなしにプロファイリングが完了することを確認します。

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

評価

技術スタック
python
領域
performance, tooling
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
32/100

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

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