Segmentation fault when importing VTK 6.2 + PyQt4 on Ubuntu
This issue was created automatically from an original Mantis Issue. Further discussion may take place here.
With
python-qt4 (4.11.4+dfsg-1build3)
python-vtk6 (6.2.0+dfsg1-4ubuntu5)
installed on an Ubuntu 15.10 system, the tiny snippet
from PyQt4.QtGui import QApplication, QMainWindow
This program segfaults, but uncomment this line => no segfault.
from vtk.qt4.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
import sys
app = QApplication(sys.argv)
produces a segmentation fault on start-up. If the import of QVTKRenderWindowInteractor is removed, it no longer segfaults.
The backtrace is:
#0 0x00007fff93d9bd4e in ?? () from /usr/lib/libkdecore.so.5 #1 0x00007ffff7de960a in call_init (l=, argc=argc@entry=2, argv=argv@entry=0x7fffffffddf8, env=env@entry=0x7fffffffde10) at dl-init.c:72 #2 0x00007ffff7de971b in call_init (env=, argv=, argc=, l=) at dl-init.c:30 #3 _dl_init (main_map=main_map@entry=0x10c4470, argc=2, argv=0x7fffffffddf8, env=0x7fffffffde10) at dl-init.c:120 #4 0x00007ffff7dee5d7 in dl_open_worker (a=a@entry=0x7fffffffc508) at dl-open.c:579 #5 0x00007ffff7de94b4 in _dl_catch_error (objname=objname@entry=0x7fffffffc4f8, errstring=errstring@entry=0x7fffffffc500, mallocedp=mallocedp@entry=0x7fffffffc4f7, operate=operate@entry=0x7ffff7dee0f0 <dl_open_worker>, args=args@entry=0x7fffffffc508) at dl-error.c:187 #6 0x00007ffff7ded9f3 in _dl_open (file=0x10d6638 "/usr/lib/kde4/plugins/styles/breeze.so", mode=-2147483647, caller_dlopen=0x7ffff4f08cd6, nsid=-2, argc=, argv=, env=0x7fffffffde10) at dl-open.c:663 #7 0x00007ffff75edfc9 in dlopen_doit (a=a@entry=0x7fffffffc720) at dlopen.c:66 #8 0x00007ffff7de94b4 in _dl_catch_error (objname=0x98b920, errstring=0x98b928, mallocedp=0x98b918, operate=0x7ffff75edf70 <dlopen_doit>, args=0x7fffffffc720) at dl-error.c:187 #9 (closed) 0x00007ffff75ee62d in _dlerror_run (operate=operate@entry=0x7ffff75edf70 <dlopen_doit>, args=args@entry=0x7fffffffc720) at dlerror.c:163 #10 0x00007ffff75ee061 in __dlopen (file=, mode=) at dlopen.c:87 #11 (closed) 0x00007ffff4f08cd6 in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4 #12 0x00007ffff4f0307d in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4 #13 0x00007ffff4f0370b in ?? () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4 #14 0x00007ffff4efc066 in QFactoryLoader::instance(QString const&) const () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4 #15 0x00007ffff575317d in QStyleFactory::create(QString const&) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4 #16 0x00007ffff54479ce in QApplication::style() () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4 #17 0x00007ffff54b910a in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4 #18 0x00007ffff54bcc83 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4 #19 0x00007ffff5447fa2 in QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4 #20 0x00007ffff544824f in QApplication::QApplication(int&, char**, int) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4 #21 0x00007ffff64fbfae in sipQApplication::sipQApplication (this=0xba80d0, a0=, a1=) at sipQtGuipart9.cpp:36106 #22 0x00007ffff64fc196 in init_type_QApplication (sipSelf=0x7ffff1136938, sipArgs=, sipKwds=0x0, sipUnused=, sipParseErr=) at /build/python-qt4-DPZMhZ/python-qt4-4.11.4+dfsg/sip/QtGui/qapplication.sip:901 #23 0x00007ffff16901cb in sipSimpleWrapper_init (self=0x7ffff1136938, args=(['test.py'],), kwds=0x0) at siplib.c:9702 #24 0x00000000004a9efb in type_call.lto_priv () at ../Objects/typeobject.c:745 #25 0x00000000004bf3cc in PyObject_Call (kw=0x0, arg=(['test.py'],), func=<PyQt4.QtCore.pyqtWrapperType at remote 0xac4880>) at ../Objects/abstract.c:2529 #26 do_call (nk=, na=, pp_stack=0x7fffffffd9b0, func=<PyQt4.QtCore.pyqtWrapperType at remote 0xac4880>) at ../Python/ceval.c:4574 #27 call_function (oparg=, pp_stack=0x7fffffffd9b0) at ../Python/ceval.c:4379 #28 PyEval_EvalFrameEx () at ../Python/ceval.c:2993 #29 0x00000000004b7986 in PyEval_EvalCodeEx () at ../Python/ceval.c:3588 #30 0x00000000004e8f3f in PyEval_EvalCode ( locals={'QMainWindow': <PyQt4.QtCore.pyqtWrapperType at remote 0xb0d900>, 'QVTKRenderWindowInteractor': <PyQt4.QtCore.pyqtWrapperType at remote 0xba7cc0>, 'builtins': <module at remote 0x7ffff7f79b08>, 'file': 'test.py', 'QApplication': <PyQt4.QtCore.pyqtWrapperType at remote 0xac4880>, 'package': None, 'sys': <module at remote 0x7ffff7f79bb0>, 'name': 'main', 'doc': None}, globals={'QMainWindow': <PyQt4.QtCore.pyqtWrapperType at remote 0xb0d900>, 'QVTKRenderWindowInteractor': <PyQt4.QtCore.pyqtWrapperType at remote 0xba7cc0>, 'builtins': <module at remote 0x7ffff7f79b08>, 'file': 'test.py', 'QApplication': <PyQt4.QtCore.pyqtWrapperType at remote 0xac4880>, 'package': None, 'sys': <module at remote 0x7ffff7f79bb0>, 'name': 'main', 'doc': None}, co=0x7ffff7edfe30) at ../Python/ceval.c:669 #31 run_mod.lto_priv () at ../Python/pythonrun.c:1370 #32 0x00000000004e3b02 in PyRun_FileExFlags () at ../Python/pythonrun.c:1356 #33 0x00000000004e22e6 in PyRun_SimpleFileExFlags () at ../Python/pythonrun.c:948 #34 0x0000000000490fe1 in Py_Main () at ../Modules/main.c:640 #35 0x00007ffff7811a40 in __libc_start_main (main=0x4909f0 , argc=2, argv=0x7fffffffddf8, init=, fini=, rtld_fini=, stack_end=0x7fffffffdde8) at libc-start.c:289 #36 0x0000000000490919 in _start ()
I'm not sure what is happening here. If I try the small example at
http://www.vtk.org/Wiki/VTK/Examples/Python/Widgets/EmbedPyQt
I get a different backtrace:
#0 0x00007fff97a2885e in _GLOBAL__sub_I_qpycore_classinfo.cpp () from /usr/lib/python2.7/dist-packages/PyQt4/QtCore.so #1 0x00007ffff7de960a in call_init (l=, argc=argc@entry=2, argv=argv@entry=0x7fffffffddf8, env=env@entry=0x7fffffffde10) at dl-init.c:72 #2 0x00007ffff7de971b in call_init (env=, argv=, argc=, l=) at dl-init.c:30 #3 _dl_init (main_map=main_map@entry=0x9e8d10, argc=2, argv=0x7fffffffddf8, env=0x7fffffffde10) at dl-init.c:120 #4 0x00007ffff7dee5d7 in dl_open_worker (a=a@entry=0x7fffffffd1d8) at dl-open.c:579 #5 0x00007ffff7de94b4 in _dl_catch_error (objname=objname@entry=0x7fffffffd1c8, errstring=errstring@entry=0x7fffffffd1d0, mallocedp=mallocedp@entry=0x7fffffffd1c7, operate=operate@entry=0x7ffff7dee0f0 <dl_open_worker>, args=args@entry=0x7fffffffd1d8) at dl-error.c:187 #6 0x00007ffff7ded9f3 in _dl_open (file=0xee42e0 "/usr/lib/python2.7/dist-packages/PyQt4/QtCore.so", mode=-2147483646, caller_dlopen=0x51a359 <_PyImport_GetDynLoadFunc+233>, nsid=-2, argc=, argv=, env=0x7fffffffde10) at dl-open.c:663 #7 0x00007ffff75edfc9 in dlopen_doit (a=a@entry=0x7fffffffd3f0) at dlopen.c:66 #8 0x00007ffff7de94b4 in _dl_catch_error (objname=0x9a1650, errstring=0x9a1658, mallocedp=0x9a1648, operate=0x7ffff75edf70 <dlopen_doit>, args=0x7fffffffd3f0) at dl-error.c:187 #9 (closed) 0x00007ffff75ee62d in _dlerror_run (operate=operate@entry=0x7ffff75edf70 <dlopen_doit>, args=args@entry=0x7fffffffd3f0) at dlerror.c:163 #10 0x00007ffff75ee061 in __dlopen (file=, mode=) at dlopen.c:87 #11 (closed) 0x000000000051a359 in PyImport_GetDynLoadFunc () at ../Python/dynload_shlib.c:140 #12 0x0000000000519eb4 in PyImport_LoadDynamicModule () at ../Python/importdl.c:42 #13 0x00000000004a2891 in import_submodule () at ../Python/import.c:2704 #14 0x00000000004a7545 in ensure_fromlist () at ../Python/import.c:2610 #15 0x00000000004a1cc8 in import_module_level.isra.3 (level=-1, fromlist=('QtCore', 'QtGui'), globals=, name=) at ../Python/import.c:2273 #16 PyImport_ImportModuleLevel () at ../Python/import.c:2292 #17 0x00000000004a4834 in builtin___import () at ../Python/bltinmodule.c:49 #18 0x00000000004a45de in PyObject_Call () at ../Objects/abstract.c:2529 #19 0x00000000004c3e40 in PyEval_CallObjectWithKeywords () at ../Python/ceval.c:4225 #20 0x00000000004c2a38 in PyEval_EvalFrameEx () at ../Python/ceval.c:2628 #21 0x00000000004b7986 in PyEval_EvalCodeEx () at ../Python/ceval.c:3588 #22 0x00000000004e8f3f in PyEval_EvalCode (locals={'vtk': <module at remote 0x7ffff7eb70f8>, 'builtins': <module at remote 0x7ffff7f79b08>, 'file': 'test2.py', 'package': None, 'sys': <module at remote 0x7ffff7f79bb0>, 'name': 'main', 'doc': None}, globals={'vtk': <module at remote 0x7ffff7eb70f8>, 'builtins': <module at remote 0x7ffff7f79b08>, 'file': 'test2.py', 'package': None, 'sys': <module at remote 0x7ffff7f79bb0>, 'name': 'main', 'doc': None}, co=0x7ffff7ee8db0) at ../Python/ceval.c:669 #23 run_mod.lto_priv () at ../Python/pythonrun.c:1370 #24 0x00000000004e3b02 in PyRun_FileExFlags () at ../Python/pythonrun.c:1356 #25 0x00000000004e22e6 in PyRun_SimpleFileExFlags () at ../Python/pythonrun.c:948 #26 0x0000000000490fe1 in Py_Main () at ../Modules/main.c:640 #27 0x00007ffff7811a40 in __libc_start_main (main=0x4909f0 , argc=2, argv=0x7fffffffddf8, init=, fini=, rtld_fini=, stack_end=0x7fffffffdde8) at libc-start.c:289 #28 0x0000000000490919 in _start ()
You can reproduce the segmentation fault with the first tiny example by saving it to test.py, then, with a Dockerfile containing
FROM ubuntu:15.10 MAINTAINER Elvis Stansvik
RUN apt-get update RUN apt-get install -yy python-qt4 python-vtk6
COPY test.py test.py
in the same directory, run:
$ docker build -t test-vtk6-qt:latest .
to build an image test-vtk6-qt:latest, followed by:
$ xhost +local: $ docker run -it -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /dev/shm:/dev/shm --device=/dev/dri test-vtk6-qt:latest /bin/bash root@5a9c35379d96:/# python test.py Segmentation fault (core dumped)
to reproduce the segmentation fault.