python / python/cpython

Segfault in `test_sampling_profiler`

Offen
#142,973 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

tests topic-profiling type-crash
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit Lib/profiling/sampling/sample.py rund um die gemeldeten Zeilen 75 und 350 und untersuche anschließend Lib/test/test_profiling/test_sampling_profiler/test_integration.py rund um test_sampling_all_threads und test_sampling_with_collapsed_export. Reproduziere die fehlschlagenden sampling-profiler-Tests unter Linux und verfolge den Segfault. Die Aufgabe ist abgeschlossen, wenn die betroffenen Tests ohne Segmentation Fault durchlaufen und die Regression von der relevanten Testsuite abgedeckt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
performance, testing
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.