حدث هذا لي عدة مرات منذ أن قمت بنقل قاعدة اختبار كبيرة ، من حوالي 450 اختبارًا ، إلى py.test
(من nose
) ، وتغيير الواجهة الخلفية django إلى اسم sqlite db ( test.db
) أو خلفية أخرى لا تفشل. يبدو أن الفشل يحدث حول علامة الاختبار 390 ؛ حتى إذا قمت بإزالة الاختبارات المحددة التي حدث فيها الخطأ.
لقد جربت هذا باستخدام py.test 2.9 وأحدث 3.0.1 أو 3.0.3.
tests.py ......
other_tests.py ...... (many more tests, ~390)
Fatal Python error: Segmentation fault
Current thread 0x00007fff73c0e000 (most recent call first):
File "venv/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 316 in execute
File "venv/lib/python2.7/site-packages/django/db/backends/utils.py", line 62 in execute
File "venv/lib/python2.7/site-packages/django/db/backends/base/base.py", line 214 in _savepoint_rollback
File "venv/lib/python2.7/site-packages/django/db/backends/base/base.py", line 254 in savepoint_rollback
File "venv/lib/python2.7/site-packages/django/db/transaction.py", line 245 in __exit__
File "venv/lib/python2.7/site-packages/django/test/testcases.py", line 941 in _rollback_atomics
File "venv/lib/python2.7/site-packages/django/test/testcases.py", line 998 in _fixture_teardown
File "venv/lib/python2.7/site-packages/django/test/testcases.py", line 853 in _post_teardown
File "venv/lib/python2.7/site-packages/django/test/testcases.py", line 189 in __call__
File "venv/lib/python2.7/site-packages/_pytest/unittest.py", line 153 in runtest
File "venv/lib/python2.7/site-packages/_pytest/runner.py", line 104 in pytest_runtest_call
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 596 in execute
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 264 in __init__
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 247 in _wrapped_call
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 595 in execute
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 333 in <lambda>
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 338 in _hookexec
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 724 in __call__
File "venv/lib/python2.7/site-packages/_pytest/runner.py", line 151 in <lambda>
File "venv/lib/python2.7/site-packages/_pytest/runner.py", line 163 in __init__
File "venv/lib/python2.7/site-packages/_pytest/runner.py", line 151 in call_runtest_hook
File "venv/lib/python2.7/site-packages/_pytest/runner.py", line 133 in call_and_report
File "venv/lib/python2.7/site-packages/_pytest/runner.py", line 79 in runtestprotocol
File "venv/lib/python2.7/site-packages/_pytest/runner.py", line 66 in pytest_runtest_protocol
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 596 in execute
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 264 in __init__
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 247 in _wrapped_call
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 595 in execute
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 264 in __init__
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 247 in _wrapped_call
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 595 in execute
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 333 in <lambda>
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 338 in _hookexec
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 724 in __call__
File "venv/lib/python2.7/site-packages/_pytest/main.py", line 152 in pytest_runtestloop
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 596 in execute
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 333 in <lambda>
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 338 in _hookexec
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 724 in __call__
File "venv/lib/python2.7/site-packages/_pytest/main.py", line 131 in _main
File "venv/lib/python2.7/site-packages/_pytest/main.py", line 96 in wrap_session
File "venv/lib/python2.7/site-packages/_pytest/main.py", line 125 in pytest_cmdline_main
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 596 in execute
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 333 in <lambda>
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 338 in _hookexec
File "venv/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 724 in __call__
File "venv/lib/python2.7/site-packages/_pytest/config.py", line 57 in main
File "venv/bin/py.test", line 11 in <module>
/bin/sh: line 1: 23353 Segmentation fault: 11 py.test
لقد تلقيت خطأً مشابهًا ، على الرغم من أنني بدأت للتو مشروعًا وليس لدي سوى اختبار أساسي واحد (جدًا) ، وأنا أستخدم المكون الإضافي المكاني لـ SQLite. ومن المثير للاهتمام ، أن إعداد قواعد البيانات الخاص بي يحدد 'NAME': ':memory:'
ولكن كلا الملفين test_:memory:
و test_:memory:-journal
يتم إنشاؤهما في الدليل الجذر الخاص بي بعد تشغيل pytest. asfaltboy هل واجهت نفس السلوك؟
$ pytest
==================================================================== test session starts ====================================================================
platform darwin -- Python 3.5.2, pytest-3.0.3, py-1.4.31, pluggy-0.4.0
Django settings: config.settings.test (from ini file)
rootdir: [...], inifile: pytest.ini
plugins: cov-2.4.0, django-3.0.0, faulthandler-1.3.0
collected 1 items
apps/firms/tests/test_models.py Fatal Python error: Segmentation fault
Current thread 0x00007fffce84c3c0 (most recent call first):
File ".../project/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py", line 335 in execute
File ".../project/lib/python3.5/site-packages/django/db/backends/utils.py", line 62 in execute
File ".../project/lib/python3.5/site-packages/django/contrib/gis/db/backends/spatialite/base.py", line 75 in prepare_database
File ".../project/lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 81 in handle
File ".../project/lib/python3.5/site-packages/django/core/management/base.py", line 345 in execute
File ".../project/lib/python3.5/site-packages/django/core/management/__init__.py", line 130 in call_command
File ".../project/lib/python3.5/site-packages/django/db/backends/base/creation.py", line 70 in create_test_db
File ".../project/lib/python3.5/site-packages/django/test/runner.py", line 743 in setup_databases
File ".../project/lib/python3.5/site-packages/pytest_django/fixtures.py", line 96 in django_db_setup
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 720 in call_fixture_func
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 815 in pytest_fixture_setup
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614 in execute
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 265 in __init__
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 248 in _wrapped_call
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 613 in execute
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334 in <lambda>
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339 in _hookexec
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745 in __call__
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 785 in execute
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 529 in _getfixturevalue
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 464 in _get_active_fixturedef
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 766 in execute
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 529 in _getfixturevalue
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 464 in _get_active_fixturedef
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 439 in getfixturevalue
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 447 in getfuncargvalue
File ".../project/lib/python3.5/site-packages/pytest_django/plugin.py", line 375 in _django_db_marker
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 720 in call_fixture_func
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 815 in pytest_fixture_setup
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614 in execute
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 265 in __init__
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 248 in _wrapped_call
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 613 in execute
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334 in <lambda>
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339 in _hookexec
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745 in __call__
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 785 in execute
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 529 in _getfixturevalue
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 464 in _get_active_fixturedef
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 439 in getfixturevalue
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 397 in _fillfixtures
File ".../project/lib/python3.5/site-packages/_pytest/fixtures.py", line 252 in fillfixtures
File ".../project/lib/python3.5/site-packages/_pytest/python.py", line 1560 in setup
File ".../project/lib/python3.5/site-packages/_pytest/runner.py", line 453 in prepare
File ".../project/lib/python3.5/site-packages/_pytest/runner.py", line 100 in pytest_runtest_setup
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614 in execute
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 265 in __init__
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 248 in _wrapped_call
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 613 in execute
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334 in <lambda>
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339 in _hookexec
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745 in __call__
File ".../project/lib/python3.5/site-packages/_pytest/runner.py", line 151 in <lambda>
File ".../project/lib/python3.5/site-packages/_pytest/runner.py", line 163 in __init__
File ".../project/lib/python3.5/site-packages/_pytest/runner.py", line 151 in call_runtest_hook
File ".../project/lib/python3.5/site-packages/_pytest/runner.py", line 133 in call_and_report
File ".../project/lib/python3.5/site-packages/_pytest/runner.py", line 73 in runtestprotocol
File ".../project/lib/python3.5/site-packages/_pytest/runner.py", line 66 in pytest_runtest_protocol
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614 in execute
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 265 in __init__
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 248 in _wrapped_call
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 613 in execute
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 265 in __init__
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 248 in _wrapped_call
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 613 in execute
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334 in <lambda>
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339 in _hookexec
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745 in __call__
File ".../project/lib/python3.5/site-packages/_pytest/main.py", line 152 in pytest_runtestloop
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614 in execute
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 265 in __init__
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 248 in _wrapped_call
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 613 in execute
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334 in <lambda>
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339 in _hookexec
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745 in __call__
File ".../project/lib/python3.5/site-packages/_pytest/main.py", line 131 in _main
File ".../project/lib/python3.5/site-packages/_pytest/main.py", line 96 in wrap_session
File ".../project/lib/python3.5/site-packages/_pytest/main.py", line 125 in pytest_cmdline_main
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614 in execute
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334 in <lambda>
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339 in _hookexec
File ".../project/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745 in __call__
File ".../project/lib/python3.5/site-packages/_pytest/config.py", line 56 in main
File ".../project/bin/pytest", line 11 in <module>
[1] 34950 segmentation fault pytest
تحديث: اجتازت اختباراتي الآن بعد تثبيت pytest-ipdb ، فأنا على v0.1dev2:
pip install git+git://github.com/mverteuil/pytest-ipdb.git
إنه يثبت قدرًا لا بأس به من التبعيات - قد يكون أحدها قد أصلح المشكلة - لكن ليس لدي الوقت في الوقت الحالي للبحث في أي منها على وجه التحديد. ها هي القائمة:
Successfully installed appnope-0.1.0 decorator-4.0.10 ipdb-0.10.1 ipython-5.1.0
ipython-genutils-0.1.0 pexpect-4.2.1 pickleshare-0.7.4 prompt-toolkit-1.0.8
ptyprocess-0.5.1 pygments-2.1.3 pytest-ipdb-0.1.dev2 simplegeneric-0.8.1
traitlets-4.3.1 wcwidth-0.1.7
نأمل أن يكون ذلك مرتبطًا: لدي مجموعة اختبار تعمل على sqlite - وهي تمر أثناء التشغيل العادي. ومع ذلك ، إذا قمت بإضافة --pdb
، فسأحصل على خطأ التجزئة. هل يمكن أن يكون الأمر متعلقًا بكيفية تخزين آثار المكدس التي تم إصلاحها بواسطة pytest-ipdb
؟
لست متأكدًا مما إذا كان مرتبطًا ، ولكن بعد إجراء مزيد من الاختبارات ، لم أواجه سوى أخطاء segfaults أو ناقل مع SQLite> 3.13.0
أنا على إصدار قديم من sqlite 2.8.17
إذا كنت تستخدم systemd
فراجع coredumpctl gdb
(ثم bt
عند وجوده داخل gdb) لمعرفة ما إذا كان هناك المزيد من المعلومات حول مكان تعطله.
هناك خطأ في sqlite 3.13 أو نحو ذلك يتسبب في حدوث أخطاء في التجزئة ، وللأسف فهو الإصدار الافتراضي في ubuntu. يجب أن تحاول تحديث sqlite ومعرفة ما إذا كان يعمل على إصلاح مشكلتك:
wget https://github.com/ghaering/pysqlite/archive/2.8.3.tar.gz \
&& wget https://www.sqlite.org/2016/sqlite-autoconf-3150200.tar.gz \
&& tar -xzf sqlite-autoconf-3150200.tar.gz \
&& tar -xzvf 2.8.3.tar.gz \
&& cd sqlite-autoconf-3150200 \
&& ./configure \
&& make \
&& make install \
&& cd .. \
&& cp /usr/local/lib/libsqlite3.so.0.8.6 /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6 \
&& cp -av sqlite-autoconf-3150200/. pysqlite-2.8.3/ \
&& cd ./pysqlite-2.8.3 && python setup.py build_static install \
&& /opt/venv/bin/python setup.py build_static install
nMustaki هل لديك رابط / مشكلة لهذا الخطأ؟ انا فضولي
هذا إذا كنت أتذكر بشكل صحيح ولكن لا يمكنني التحقق الآن:
https://www.sqlite.org/src/info/16c9801ceba49
في الجمعة ، 27 يناير 2017 ، الساعة 15:25 ، كتب جون ميلر ، [email protected] :
nMustaki https://github.com/nMustaki هل لديك رابط / مشكلة لذلك
خلل برمجي؟ انا فضولي-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/pytest-dev/pytest-django/issues/409#issuecomment-275676636 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AA-fUbC400zZ_Tq89EP3tZQlUGTrPMpGks5rWf5mgaJpZM4Kg-gh
.
لا أحد يوفر Stacktrace ؟! 🤷♂️
هل ما زالت موجودة في الإصدار الحالي؟
ليس حشرة pytest-django حقًا - الإغلاق.
لا تتردد في تقديم العلاقات العامة إذا كان لديك بعض الحلول ، وهو مناسب بالرغم من ذلك.
فقط لمعلوماتك ، أرى خلفية متشابهة جدًا مع Django 2.0 و sqlite 3.8.2 ، Python 3.6.3 على Ubuntu (Travis CI) وليس على محطة عمل devel الخاصة بي وهي RHEL 7 مع sqlite3 أقدم. مما يمكنني قوله فإن segafult يحدث في استعلام UPDATE.
لقد أسقطت أيضًا pytest وأجري اختباراتي عبر manage.py test
لا يزال يعيد إنتاج المشكلة. أي تلميحات ستكون موضع ترحيب. شكرا.
atodorov ، قد ترغب في إلقاء نظرة على بطاقة Django رقم 24080 والتي يبدو أنها تشير إلى أن هذه مشكلة على الأرجح مع SQLite وليس مع Django.
يشير أحد المعلقين إلى البطاقة ذات الصلة في SQLite # 7f7f8026eda38 والتي تم إصلاحها في الإصدار 3.12.1 . أعتقد أنني قمت في النهاية بحل مشكلتي الأصلية عن طريق الترقية إلى أحدث إصدار من SQLite أيضًا ، لذا أقترح عليك تجربة ذلك أيضًا.
شكرا على الروابط. لقد رأيت تذكرة Django وبالفعل أدت ترقية sqlite إلى حل المشكلة. ومع ذلك ، لا أعتقد أنني أواجه نفس مشكلة sqlite التي ربطتها. على أي حال التحديث يحل ذلك.
التعليق الأكثر فائدة
هناك خطأ في sqlite 3.13 أو نحو ذلك يتسبب في حدوث أخطاء في التجزئة ، وللأسف فهو الإصدار الافتراضي في ubuntu. يجب أن تحاول تحديث sqlite ومعرفة ما إذا كان يعمل على إصلاح مشكلتك: