python / python/cpython

Python cProfile run gets SIGSEGV due to stack overrun

Ouverte
#138,808 16 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

extension-modules topic-profiling type-crash
Langage dominant
Python
Étoiles
77.2k
Forks
36k
Métriques de merge des PR
Métriques de PR en attente

Description

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)]

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par l’implémentation de cProfile et _lsprof autour de RotatingTree_Enum et _lsprof_Profiler_getstats, en prenant la trace SIGSEGV de macOS comme symptôme signalé. Trouvez un reproducer de l’exécution de cProfile sous Python 3.10, puis vérifiez que le profilage se termine sans débordement de pile ni crash.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
performance, tooling
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
32/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.