Mayavi: خطأ SEG عند لقطة شاشة مؤامرة ثلاثية الأبعاد

تم إنشاؤها على ٥ سبتمبر ٢٠١٨  ·  7تعليقات  ·  مصدر: enthought/mayavi

هذا الملف: min_example_fail.py:

import faulthandler
faulthandler.enable()

from mayavi import mlab
mlab.test_plot3d()
mlab.screenshot()

فشل مع المكدس التالي:

$ python minimal_example_fail.py 
Fatal Python error: Segmentation fault

Current thread 0x00007f2c3107e740 (most recent call first):
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/tvtk/tvtk_base.py", line 568 in _wrap_call
  File "tvtk_classes/open_gl_render_window.py", line 79 in get_pixel_data
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/mayavi/tools/figure.py", line 348 in screenshot
  File "minimal_example_fail.py", line 15 in <module>
Segmentation fault (core dumped)

لإعادة إنتاج:

$ conda deactivate
$ conda create -n test python=3.6 numpy "pyqt>=5" matplotlib traits pyface traitsui
$ conda activate test
$ pip install vtk
$ pip install mayavi
$ python minimal_example_fail.py

تضمين التغريدة

التعليق الأكثر فائدة

هل يمكنك تأكيد أن هذا التعديل يصلح بعض الأشياء؟

from pyface.api import GUI
from mayavi import mlab
mlab.test_plot3d()
GUI().process_events()
mlab.screenshot()

أو قذيفة أحادية البطانة:

python -c "from pyface.api import GUI; from mayavi import mlab; mlab.test_plot3d(); GUI().process_events(); mlab.screenshot()"

في الأساس ، أظن أن المشكلة تكمن في أن حلقة الحدث لم تبدأ ، وبالتالي فإن النظام في حالة عدم العرض بالكامل عند محاولة لقطة الشاشة.

نحن نعمل على حل هذا الأمر في PySurfer من خلال فرض التقديم باستخدام خدعة GUI الصغيرة.

prabhuramachandran بافتراض أن هذا يؤدي إلى إصلاح الأشياء ، فمن الممكن أن تكون هناك طريقة ما للتحقق مما إذا كان Contex OpenGL (أو شيء آخر) صالحًا بالفعل قبل محاولة لقطة الشاشة ، وإذا لم يكن كذلك ، فاستخدم هذه الخدعة / الاختراق لمعالجة الأحداث بحيث تصبح صالح. يبدو مشكوكًا فيه بعض الشيء / مبتذل جدًا ، لذلك ربما لا يستحق ذلك.

ال 7 كومينتر

لا يمكنني إعادة إنتاج هذا ولكن هناك مشكلة أخرى أواجهها. المشكلة هي أن حجم النافذة هو صفر. هذه في الحقيقة مشكلة كيو تي لأن الحلقة الرئيسية لا تعمل. يمكنك تجربة هذا في جلسة IPython مع %gui qt وترى؟

هل هذا ما تقصده؟

$ ipython 
Python 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 17:14:51) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: %gui qt

In [2]: %run ./minimal_example_fail.py
Qt WebEngine seems to be initialized from a plugin. Please set Qt::AA_ShareOpenGLContexts using QCoreApplication::setAttribute before constructing QGuiApplication.
Fatal Python error: Segmentation fault

Thread 0x00007fb7eef88700 (most recent call first):
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/threading.py", line 295 in wait
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/threading.py", line 551 in wait
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/core/history.py", line 829 in run
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/core/history.py", line 58 in needs_sqlite
  File "<decorator-gen-24>", line 2 in run
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/threading.py", line 916 in _bootstrap_inner
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/threading.py", line 884 in _bootstrap

Current thread 0x00007fb7f5710740 (most recent call first):
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/tvtk/tvtk_base.py", line 568 in _wrap_call
  File "tvtk_classes/open_gl_render_window.py", line 79 in get_pixel_data
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/mayavi/tools/figure.py", line 348 in screenshot
  File "/home/maximilien.chaumon/owncloud/Lab/Projects/CTPS/code/minimal_example_fail.py", line 15 in <module>
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/utils/py3compat.py", line 188 in execfile
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2527 in safe_execfile
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/core/magics/execution.py", line 761 in run
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/core/magics/execution.py", line 775 in run
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/core/magic.py", line 187 in <lambda>
  File "<decorator-gen-60>", line 2 in run
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2131 in run_line_magic
  File "<ipython-input-2-f514c016d8ee>", line 1 in <module>
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2963 in run_code
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2909 in run_ast_nodes
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2785 in _run_cell
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2662 in run_cell
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/terminal/interactiveshell.py", line 476 in interact
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/terminal/interactiveshell.py", line 485 in mainloop
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/terminal/ipapp.py", line 356 in start
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/traitlets/config/application.py", line 658 in launch_instance
  File "/home/maximilien.chaumon/anaconda3/envs/mne/lib/python3.6/site-packages/IPython/__init__.py", line 125 in start_ipython
  File "/home/maximilien.chaumon/anaconda3/envs/mne/bin/ipython", line 11 in <module>
Segmentation fault (core dumped)

لقد جربت هذا على جهاز ubuntu الخاص بي باستخدام VTK-8.1.1 (من نقطة) ، و Python 3.6.0 ، و mayavi master ، و pyqt5 5.10.1 ، وحصلت على خطأ ولكن لا يوجد segfault. يرجع الخطأ الذي أراه إلى مشكلة أعمق تتمثل في أنه بدون تشغيل مجموعة أدوات واجهة المستخدم ، لا توجد نافذة مفتوحة وبالتالي فإن حجم الشاشة لا يزال صفراً ولكن هذا لا يحدث. سأعمل على حل المشكلة الأخرى مع الحجم صفر ولكن لسوء الحظ ، لا يمكنني إعادة إنتاج segfault الخاص بك.

لقد واجهت خطأً مماثلاً إن لم يكن نفس خطأ segfault على كل من أجهزة OSX و Linux. تمكنت من تضييقه إلى mayavi احتمال حدوث الخطأ.

fd9a515a9563d81a42b84514c1fb4ce5f81ac9a0 هو أول التزام سيء
الالتزام fd9a515a9563d81a42b84514c1fb4ce5f81ac9a0
المؤلف: Prabhu Ramachandran [email protected]
التاريخ: الجمعة 3 أغسطس 21:38:13 2018 -0400

Modify module manager to work with composite data.

This uses the dataset_adapter code from VTK and requires VTK >= 6.3.

: 04000004000088baad8a26a7fc9d06fc95979441b4cd436e26962eca99efb8a7de37c75d3113fe194c16403b269d M مايافي

سأذهب لمعرفة ما إذا كان بإمكاني التكاثر بالحد الأدنى من dnacombo
يمكنني التكاثر باستخدام الحد الأدنى من المثال ، ولكن فقط في صندوق Linux الخاص بي.

النظام الأساسي: Linux-4.15.0-34-generic-x86_64-with-debian-buster-sid
بيثون: 3.6.6 | Anaconda، Inc. | (افتراضي ، 28 حزيران (يونيو) 2018 ، 17:14:51) [GCC 7.2.0]
الملف القابل للتنفيذ: / home / ktavabi / miniconda3 / envs / mne / bin / python
وحدة المعالجة المركزية: x86_64: 24 نواة
الذاكرة: 94.4 جيجا بايت

شهر: 0.17
numpy: 1.15.1 {blas = mkl_rt، lapack = mkl_rt}
scipy: 1.1.0
matplotlib: 2.2.2 {الخلفية = Qt5Agg}

sklearn: 0.19.2
نيبابل: 2.4.0 ديف
مايافي: 4.7.0.dev0 4.6.0 {qt_api = pyqt5}
Cupy: غير موجود
الباندا: 0.23.4
ديبي: 0.15.0 ديف
vtk: 8.1.1

على جهاز OSX الخاص بي ، أحصل على أخطاء مختلفة ، ولكن لا توجد أخطاء.

لقد واجهت خطأً مشابهًا / مماثلًا في segfault على جهاز مختلف ، ولكنه يشبه إلى حد كبير إنشاء 18.04 بالمواصفات التالية:

النظام الأساسي: Linux-4.15.0-36-generic-x86_64-with-debian-buster-sid
بيثون: 3.6.6 | Anaconda، Inc. | (افتراضي ، 28 حزيران (يونيو) 2018 ، 17:14:51) [GCC 7.2.0]
الملف القابل للتنفيذ: / home / nordme / miniconda3 / envs / mne / bin / python
وحدة المعالجة المركزية: x86_64: 12 نواة
الذاكرة: 15.5 جيجا بايت

شهر: 0.17
numpy: 1.15.2 {blas = mkl_rt، lapack = mkl_rt}
scipy: 1.1.0
matplotlib: 2.2.2 {الخلفية = Qt5Agg}

sklearn: 0.20.0
نيبابل: 2.3.0
مايافي: 4.7.0.dev0 {qt_api = pyqt5}
Cupy: غير موجود
الباندا: 0.23.4
ديبي: 0.14.0

أدى التبديل إلى إصدار a19c710c3f61389d79ed05271584e44f9744f6bc 4.6.0 إلى حل الخطأ. LMK إذا كنت تريد أن ترى التتبع.

هل يمكنك تأكيد أن هذا التعديل يصلح بعض الأشياء؟

from pyface.api import GUI
from mayavi import mlab
mlab.test_plot3d()
GUI().process_events()
mlab.screenshot()

أو قذيفة أحادية البطانة:

python -c "from pyface.api import GUI; from mayavi import mlab; mlab.test_plot3d(); GUI().process_events(); mlab.screenshot()"

في الأساس ، أظن أن المشكلة تكمن في أن حلقة الحدث لم تبدأ ، وبالتالي فإن النظام في حالة عدم العرض بالكامل عند محاولة لقطة الشاشة.

نحن نعمل على حل هذا الأمر في PySurfer من خلال فرض التقديم باستخدام خدعة GUI الصغيرة.

prabhuramachandran بافتراض أن هذا يؤدي إلى إصلاح الأشياء ، فمن الممكن أن تكون هناك طريقة ما للتحقق مما إذا كان Contex OpenGL (أو شيء آخر) صالحًا بالفعل قبل محاولة لقطة الشاشة ، وإذا لم يكن كذلك ، فاستخدم هذه الخدعة / الاختراق لمعالجة الأحداث بحيث تصبح صالح. يبدو مشكوكًا فيه بعض الشيء / مبتذل جدًا ، لذلك ربما لا يستحق ذلك.

larsoner - نعم لقد اكتشفت نفس الشيء (انظر تعليقي السابق) وأريد إصلاحه بشكل نظيف في mlab في وقت ما. آمل أن أصل إليها في وقت ما. أيضًا ، اعتبارًا من الإصدار 4.6.1 ، يحتوي mlab على وظيفة process_ui_events تستدعي أحداث العملية دون أن يضطر المستخدم إلى استيراد واجهة المستخدم الرسومية وما إلى ذلك (http://docs.enthought.com/mayavi/mayavi/auto/changes .html # id10).

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

igamenovoer picture igamenovoer  ·  7تعليقات

Mallcock1 picture Mallcock1  ·  10تعليقات

stefanoborini picture stefanoborini  ·  11تعليقات

kitchoi picture kitchoi  ·  10تعليقات

rahulporuri picture rahulporuri  ·  3تعليقات