Python cProfile run gets SIGSEGV due to stack overrun
未關閉
還沒有人認領這個 Issue。
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)]
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
研究方向
從 RotatingTree_Enum 和 _lsprof_Profiler_getstats 周邊的 cProfile 與 _lsprof 實作著手,以 macOS SIGSEGV 追蹤作為回報的症狀。找到一個可以重現 Python 3.10 cProfile 執行的重現程式,然後驗證效能分析能在不發生堆疊溢位或崩潰的情況下完成。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- python
- 領域
- performance, tooling
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 需要釐清
- 新手友好度
- 32/100