Python cProfile run gets SIGSEGV due to stack overrun
Aperta
Nessuno ha ancora preso questa issue.
extension-modules
topic-profiling
type-crash
- Lingua principale
- Python
- Stelle
- 77.2k
- Fork
- 35.9k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
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)]
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia esaminando l'implementazione di cProfile e _lsprof intorno a RotatingTree_Enum e _lsprof_Profiler_getstats, usando il trace SIGSEGV di macOS come sintomo segnalato. Trova un caso riproducibile per l'esecuzione di cProfile in Python 3.10, quindi verifica che la profilazione termini senza overflow dello stack né crash.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- performance, tooling
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 32/100