ccrook / QGIS-Contour-Plugin

Contour plugin for QGIS - uses python matplotlib to generate contours of data on vector point data.
43 stars 13 forks source link

QGIS 3 implementation crashes QGIS in ubuntu nightly #23

Closed ccrook closed 5 years ago

ccrook commented 6 years ago

Contour plugin rebuilt for QGIS3 in qgis3 branch, but currently crashes when contouring irregular (non-gridded) data in ubuntu. Seems to work ok in windows.

Have released as experimental as still valuable for gridded contouring and in Windows.

Crash occurs in calculating convex hull as preliminary to forming triangulation. Occurs on ubuntu 16.04 with matplotlib version 1.5.1 and ubuntu 17.10 with matplotlib version 2.0.0. gdb trace output on 16.04 with nightly ubuntugis distribution follows:

Thread 1 "qgis.bin" received signal SIGSEGV, Segmentation fault.
0x00007fff4f7ca098 in qh_initstatistics ()
   from /usr/lib/python3/dist-packages/matplotlib/_qhull.cpython-35m-x86_64-linux-gnu.so
#0  0x00007fff4f7ca098 in qh_initstatistics ()
   from /usr/lib/python3/dist-packages/matplotlib/_qhull.cpython-35m-x86_64-linux-gnu.so
#1  0x00007fff4f7c6f82 in qh_initqhull_start ()
   from /usr/lib/python3/dist-packages/matplotlib/_qhull.cpython-35m-x86_64-linux-gnu.so
#2  0x00007fff4f7d12bc in qh_new_qhull ()
   from /usr/lib/python3/dist-packages/matplotlib/_qhull.cpython-35m-x86_64-linux-gnu.so
#3  0x00007fff4f7a3821 in ?? ()
   from /usr/lib/python3/dist-packages/matplotlib/_qhull.cpython-35m-x86_64-linux-gnu.so
#4  0x00007fff5d977039 in PyCFunction_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#5  0x00007fff5da831b5 in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#6  0x00007fff5db13cac in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#7  0x00007fff5db13d83 in PyEval_EvalCodeEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#8  0x00007fff5d99bad8 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#9  0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#10 0x00007fff5daeeaec in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#11 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#12 0x00007fff5d946f19 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#13 0x00007fff5d959fe6 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#14 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#15 0x00007fff5da7d92f in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#16 0x00007fff5db13cac in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#17 0x00007fff5db13d83 in PyEval_EvalCodeEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#18 0x00007fff5d99bbd5 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#19 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#20 0x00007fff5da7e9eb in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#21 0x00007fff5da83639 in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#22 0x00007fff5db13cac in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#23 0x00007fff5db13d83 in PyEval_EvalCodeEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#24 0x00007fff5d99bbd5 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#25 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#26 0x00007fff5da7e9eb in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#27 0x00007fff5db13cac in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#28 0x00007fff5db13d83 in PyEval_EvalCodeEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#29 0x00007fff5d99bbd5 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#30 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#31 0x00007fff5da7e9eb in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#32 0x00007fff5db13cac in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#33 0x00007fff5db13d83 in PyEval_EvalCodeEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#34 0x00007fff5d99bbd5 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#35 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#36 0x00007fff5daeeaec in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#37 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#38 0x00007fff5d946f19 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#39 0x00007fff5d959fe6 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#40 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#41 0x00007fff5da7e9eb in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#42 0x00007fff5db13cac in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#43 0x00007fff5db13d83 in PyEval_EvalCodeEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#44 0x00007fff5d99bbd5 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#45 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#46 0x00007fff5da7e9eb in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#47 0x00007fff5db13cac in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#48 0x00007fff5db13d83 in PyEval_EvalCodeEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#49 0x00007fff5d99bbd5 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#50 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#51 0x00007fff5da7e9eb in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#52 0x00007fff5db13cac in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#53 0x00007fff5da81f39 in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#54 0x00007fff5da83639 in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#55 0x00007fff5da83639 in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#56 0x00007fff5db13cac in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#57 0x00007fff5db13d83 in PyEval_EvalCodeEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#58 0x00007fff5d99bad8 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#59 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#60 0x00007fff5daeeaec in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#61 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#62 0x00007fff5db12937 in PyEval_CallObjectWithKeywords ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#63 0x00007fff5cfc5d00 in ?? ()
   from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-35m-x86_64-linux-gnu.so
#64 0x00007fff5cfc6178 in ?? ()
   from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-35m-x86_64-linux-gnu.so
#65 0x00007fff5cfbc2b0 in ?? ()
   from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-35m-x86_64-linux-gnu.so
#66 0x00007fff5cfbcbe7 in ?? ()
   from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-35m-x86_64-linux-gnu.so
#67 0x00007ffff4d0eee0 in QMetaObject::activate(QObject*, int, int, void**) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#68 0x00007ffff596d2b2 in QAbstractButton::clicked(bool) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#69 0x00007ffff56cff44 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#70 0x00007ffff56d1559 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#71 0x00007ffff56d16d4 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#72 0x00007fff563b028b in ?? ()
   from /usr/lib/python3/dist-packages/PyQt5/QtWidgets.cpython-35m-x86_64-linux-gnu.so
#73 0x00007ffff5615fc8 in QWidget::event(QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#74 0x00007fff563b208b in ?? ()
   from /usr/lib/python3/dist-packages/PyQt5/QtWidgets.cpython-35m-x86_64-linux-gnu.so
#75 0x00007ffff55d305c in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#76 0x00007ffff55d8c19 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#77 0x00007ffff611fff1 in QgsApplication::notify (this=0x7fffffffda80, 
    receiver=0x55555950f720, event=0x7fffffffb0d0)
    at ../../src/core/qgsapplication.cpp:317
#78 0x00007ffff4ce038b in QCoreApplication::notifyInternal(QObject*, QEvent*)
    () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#79 0x00007ffff55d7b32 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#80 0x00007ffff56305bb in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#81 0x00007ffff5632b7b in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#82 0x00007ffff55d305c in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#83 0x00007ffff55d8516 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#84 0x00007ffff611fff1 in QgsApplication::notify (this=0x7fffffffda80, 
    receiver=0x55555912c540, event=0x7fffffffb580)
    at ../../src/core/qgsapplication.cpp:317
#85 0x00007ffff4ce038b in QCoreApplication::notifyInternal(QObject*, QEvent*)
    () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#86 0x00007ffff50224e1 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#87 0x00007ffff50241a5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#88 0x00007ffff5007f08 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#89 0x00007fffd35dc200 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#90 0x00007fffec859197 in g_main_context_dispatch ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#91 0x00007fffec8593f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#92 0x00007fffec85949c in g_main_context_iteration ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#93 0x00007ffff4d367cf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#94 0x00007ffff4cddb4a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#95 0x00007ffff57cdd8d in QDialog::exec() ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#96 0x00007fff5639989d in ?? ()
   from /usr/lib/python3/dist-packages/PyQt5/QtWidgets.cpython-35m-x86_64-linux-gnu.so
#97 0x00007fff5d977039 in PyCFunction_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#98 0x00007fff5da831b5 in PyEval_EvalFrameEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#99 0x00007fff5db13cac in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#100 0x00007fff5db13d83 in PyEval_EvalCodeEx ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#101 0x00007fff5d99bad8 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#102 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#103 0x00007fff5daeeaec in ?? ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#104 0x00007fff5da5054e in PyObject_Call ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#105 0x00007fff5db12937 in PyEval_CallObjectWithKeywords ()
   from /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0
#106 0x00007fff5cfc5d00 in ?? ()
   from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-35m-x86_64-linux-gnu.so
#107 0x00007fff5cfc6178 in ?? ()
   from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-35m-x86_64-linux-gnu.so
#108 0x00007fff5cfbc2b0 in ?? ()
   from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-35m-x86_64-linux-gnu.so
#109 0x00007fff5cfbcbe7 in ?? ()
   from /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-35m-x86_64-linux-gnu.so
#110 0x00007ffff4d0eee0 in QMetaObject::activate(QObject*, int, int, void**) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#111 0x00007ffff55c9412 in QAction::triggered(bool) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#112 0x00007ffff55cb898 in QAction::activate(QAction::ActionEvent) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#113 0x00007ffff56d15a0 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#114 0x00007ffff56d16d4 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#115 0x00007ffff579626a in QToolButton::mouseReleaseEvent(QMouseEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#116 0x00007ffff5615fc8 in QWidget::event(QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#117 0x00007ffff5796349 in QToolButton::event(QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#118 0x00007ffff55d305c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#119 0x00007ffff55d8c19 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#120 0x00007ffff611fff1 in QgsApplication::notify (this=0x7fffffffda80, 
    receiver=0x555557aa4ef0, event=0x7fffffffc5a0)
    at ../../src/core/qgsapplication.cpp:317
#121 0x00007ffff4ce038b in QCoreApplication::notifyInternal(QObject*, QEvent*)
    () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#122 0x00007ffff55d7b32 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#123 0x00007ffff56305bb in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#124 0x00007ffff5632b7b in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#125 0x00007ffff55d305c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#126 0x00007ffff55d8516 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#127 0x00007ffff611fff1 in QgsApplication::notify (this=0x7fffffffda80, 
    receiver=0x555555e5d530, event=0x7fffffffca50)
    at ../../src/core/qgsapplication.cpp:317
#128 0x00007ffff4ce038b in QCoreApplication::notifyInternal(QObject*, QEvent*)
    () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#129 0x00007ffff50224e1 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#130 0x00007ffff50241a5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#131 0x00007ffff5007f08 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#132 0x00007fffd35dc200 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#133 0x00007fffec859197 in g_main_context_dispatch ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#134 0x00007fffec8593f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#135 0x00007fffec85949c in g_main_context_iteration ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#136 0x00007ffff4d367cf in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#137 0x00007ffff4cddb4a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#138 0x00007ffff4ce5bec in QCoreApplication::exec() ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#139 0x00005555555678b1 in main (argc=1, argv=0x7fffffffdf68)
    at ../../src/app/main.cpp:1431

Error occurs in python line

            cs = plt.tricontour(x, y, z, levels, extend=extend)

Note that dumping x,y,z,levels with np.save and then running tricontour in a simple test programs runs without error, so in some way the error relates to the QGIS environment.

Comment from Ben Root (on matplotlib-users list):

Looks like a conflict for the qhull library, which matplotlib vendors and builds as a part of its packaging. How did qgis and matplotlib get installed? Perhaps they were built with conflicting flags, perhaps? Just a few ideas off of the top of my head.

ccrook commented 5 years ago

Fixed in 8a3a9163852b43ea495237ba9ae94b7b7c957063