python / python/cpython

Segfault in `test_sampling_profiler`

Ouverte
#142,973 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

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

Description

Crash report

What happened?

A recent Buildbot run (AMD64 Debian root) saw a segfault in test_sampling_profiler: https://buildbot.python.org/#/builders/345/builds/12988

test_sampling_all_threads (test.test_profiling.test_sampling_profiler.test_integration.TestSampleProfilerIntegration.test_sampling_all_threads) ... Fatal Python error: Segmentation fault

Current thread 0x00007f85531fa740 [python] (most recent call first):
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/profiling/sampling/sample.py", line 75 in sample
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/profiling/sampling/sample.py", line 350 in sample
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/test_profiling/test_sampling_profiler/test_integration.py", line 521 in test_sampling_all_threads
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/case.py", line 613 in _callTestMethod
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/case.py", line 667 in run
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/case.py", line 723 in __call__
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/suite.py", line 122 in run
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/suite.py", line 84 in __call__
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/suite.py", line 122 in run
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/suite.py", line 84 in __call__
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/suite.py", line 122 in run
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/suite.py", line 84 in __call__
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/suite.py", line 122 in run
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/suite.py", line 84 in __call__
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/suite.py", line 122 in run
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/suite.py", line 84 in __call__
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/runner.py", line 257 in run
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/single.py", line 84 in _run_suite
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/single.py", line 42 in run_unittest
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/single.py", line 162 in test_func
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/single.py", line 118 in regrtest_runner
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/single.py", line 165 in _load_run_test
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/single.py", line 210 in _runtest_env_changed_exc
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/single.py", line 319 in _runtest
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/single.py", line 348 in run_single_test
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/worker.py", line 99 in worker_process
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/worker.py", line 134 in main
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/libregrtest/worker.py", line 138 in <module>
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/runpy.py", line 87 in _run_code
  File "/root/buildarea/3.x.angelico-debian-amd64/build/Lib/runpy.py", line 196 in _run_module_as_main

Current thread's C stack trace (most recent call first):
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at _Py_DumpStack+0x33 [0x563947ed22d4]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x3285b2 [0x563947eea5b2]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x328caa [0x563947eeacaa]
  Binary file "/lib/x86_64-linux-gnu/libc.so.6", at +0x3bfd0 [0x7f8553238fd0]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at _PyEval_EvalFrameDefault+0x5795 [0x563947e2bc9a]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x280c92 [0x563947e42c92]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x280e44 [0x563947e42e44]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at _PyFunction_Vectorcall+0x54 [0x563947cee2da]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x12f1c1 [0x563947cf11c1]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x12f326 [0x563947cf1326]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x12da86 [0x563947cefa86]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x12dd76 [0x563947cefd76]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at PyObject_Call+0x20 [0x563947cefdae]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at _PyEval_EvalFrameDefault+0x60a2 [0x563947e2c5a7]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x280c92 [0x563947e42c92]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x280e44 [0x563947e42e44]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at _PyFunction_Vectorcall+0x54 [0x563947cee2da]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x12d7d3 [0x563947cef7d3]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x12d99d [0x563947cef99d]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x1c26af [0x563947d846af]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x1c278d [0x563947d8478d]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at _PyObject_MakeTpCall+0xce [0x563947cee47c]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x12c6af [0x563947cee6af]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at PyObject_Vectorcall+0x23 [0x563947cee6fd]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at _Py_VectorCall_StackRefSteal+0x86 [0x563947e237d2]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at _PyEval_EvalFrameDefault+0x90b2 [0x563947e2f5b7]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x280c92 [0x563947e42c92]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x280e44 [0x563947e42e44]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at _PyFunction_Vectorcall+0x54 [0x563947cee2da]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x12f1c1 [0x563947cf11c1]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x12f326 [0x563947cf1326]
  Binary file "/root/buildarea/3.x.angelico-debian-amd64/build/python", at +0x12da86 [0x563947cefa86]
  <truncated rest of calls>

A similar crash happened earlier in the run in test_sampling_with_collapsed_export.

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux

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

No response

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 Lib/profiling/sampling/sample.py autour des lignes signalées 75 et 350, puis inspectez Lib/test/test_profiling/test_sampling_profiler/test_integration.py autour de test_sampling_all_threads et test_sampling_with_collapsed_export. Reproduisez les tests défaillants de sampling-profiler sous Linux et suivez le segfault. C’est terminé lorsque les tests concernés s’exécutent sans segmentation fault et que la régression est couverte par la suite de tests pertinente.

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

Évaluation

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

Recevez les nouvelles issues par e-mail

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