CI: ColorOpacityTableEditing test is flaky
Very occasionnaly, the ColorOpacityTableEditing fails with a SIGSEV:
vtkSMTestDriver: client command is:
"/builds/gitlab-kitware-sciviz-ci/build/bin/paraview" "--enable-bt" "--test-script=/builds/gitlab-kitware-sciviz-ci/Clients/ParaView/Testing/XML/ColorOpacityTableEditing.xml" "--test-directory=/builds/gitlab-kitware-sciviz-ci/build/Testing/Temporary" "--test-baseline=/builds/gitlab-kitware-sciviz-ci/build/ExternalData/Clients/ParaView/Testing/Data/Baseline/ColorOpacityTableEditing.png" "--data-directory=/builds/gitlab-kitware-sciviz-ci/build/ExternalData" "--dr" "--exit"
vtkSMTestDriver: starting process client
-------------- client output --------------
hwloc/linux: Ignoring PCI device with non-16bit domain.
Pass --enable-32bits-pci-domain to configure to support such devices
(warning: it would break the library ABI, don't enable unless really needed).
Process started
vtkSMTestDriver: client successfully started.
Process started
Playing: /builds/gitlab-kitware-sciviz-ci/Clients/ParaView/Testing/XML/ColorOpacityTableEditing.xml
Loguru caught a signal: SIGSEGV
Stack trace:
33 0x407dc5 /builds/gitlab-kitware-sciviz-ci/build/bin/paraview() [0x407dc5]
32 0x7f938637e4f0 __libc_start_main + 128
31 0x7f938637e440 /lib64/libc.so.6(+0x40440) [0x7f938637e440]
30 0x40f540 /builds/gitlab-kitware-sciviz-ci/build/bin/paraview() [0x40f540]
29 0x7f93844e9b34 QCoreApplication::exec() + 148
28 0x7f93844e15f2 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 306
27 0x7f9384533f88 QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 104
26 0x7f93724c78a3 g_main_context_iteration + 51
25 0x7f937251f308 /lib64/libglib-2.0.so.0(+0xaa308) [0x7f937251f308]
24 0x7f93724ca0af g_main_context_dispatch + 415
23 0x7f9384533bc4 /lib64/libQt5Core.so.5(+0x2f7bc4) [0x7f9384533bc4]
22 0x7f9384533283 QTimerInfoList::activateTimers() + 1059
21 0x7f93844e2be8 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 296
20 0x7f938594b443 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 131
19 0x7f938450d2cf QObject::event(QEvent*) + 447
18 0x7f93841f0f9b pqTimer::timerEvent(QTimerEvent*) + 35
17 0x7f9384519a7e QTimer::timeout(QTimer::QPrivateSignal) + 62
16 0x7f9384516820 /lib64/libQt5Core.so.5(+0x2da820) [0x7f9384516820]
15 0x7f9385f7d840 /builds/gitlab-kitware-sciviz-ci/build/bin/../lib64/libpqApplicationComponents-pv5.10.so.1(+0xd2840) [0x7f9385f7d840]
14 0x7f9385ff552c pqCommandLineOptionsBehavior::processCommandLineOptions() + 128
13 0x7f9385ff6905 pqCommandLineOptionsBehavior::processTests() + 469
12 0x7f93841ebf74 pqTestUtility::playTests(QString const&) + 78
11 0x7f93841ec223 pqTestUtility::playTests(QStringList const&) + 635
10 0x7f93841d1d84 pqEventDispatcher::playEvents(pqEventSource&, pqEventPlayer&) + 496
9 0x7f93841d2480 pqEventDispatcher::playEvent(int) + 1418
8 0x7f93841d413e pqEventPlayer::playEvent(QString const&, QString const&, QString const&, int, bool&) + 1078
7 0x7f93841eb0b8 pqTableViewEventPlayer::playEvent(QObject*, QString const&, QString const&, int, bool&) + 130
6 0x7f93841c691b pqAbstractItemViewEventPlayerBase::playEvent(QObject*, QString const&, QString const&, int, bool&) + 1723
5 0x7f9385bc235f QAbstractItemView::setCurrentIndex(QModelIndex const&) + 159
4 0x7f93844a3e0e QItemSelectionModel::setCurrentIndex(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>) + 174
3 0x7f93844a27fe QItemSelectionModel::currentChanged(QModelIndex const&, QModelIndex const&) + 62
2 0x7f9384516820 /lib64/libQt5Core.so.5(+0x2da820) [0x7f9384516820]
1 0x7f9385bc88ea QAbstractItemView::currentChanged(QModelIndex const&, QModelIndex const&) + 474
0 0x7f9386393350 /lib64/libc.so.6(+0x55350) [0x7f9386393350]
( 2.493s) [paraview ] :0 FATL| Signal: SIGSEGV
vtkSMTestDriver: client0 process exited with an exception: Segmentation fault
This is already a FORCE_SERIAL test. I was not able to reproduce locally by just running the test by I was able to obtain the same sigsev stack by just showing another window on top of ParaView during the test:
3134: Loguru caught a signal: SIGSEGV
3134: Stack trace:
3134: 33 0x5572c70e8dd5 /home/glow/dev/paraview/pv1/build/bin/paraview(+0x8dd5) [0x5572c70e8dd5]
3134: 32 0x7f784b62934a __libc_start_main + 138
3134: 31 0x7f784b629290 /usr/lib/libc.so.6(+0x29290) [0x7f784b629290]
3134: 30 0x5572c70f001d /home/glow/dev/paraview/pv1/build/bin/paraview(+0x1001d) [0x5572c70f001d]
3134: 29 0x7f784928fda9 QCoreApplication::exec() + 153
3134: 28 0x7f784928527c QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 300
3134: 27 0x7f78492d732c QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 108
3134: 26 0x7f783d916392 g_main_context_iteration + 50
3134: 25 0x7f783d96f001 /usr/lib/libglib-2.0.so.0(+0xab001) [0x7f783d96f001]
3134: 24 0x7f783d918c6b g_main_context_dispatch + 411
3134: 23 0x7f78492d71b2 /usr/lib/libQt5Core.so.5(+0x2d71b2) [0x7f78492d71b2]
3134: 22 0x7f78492d6b73 QTimerInfoList::activateTimers() + 931
3134: 21 0x7f784928cad8 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 296
3134: 20 0x7f784a978b3c QApplicationPrivate::notify_helper(QObject*, QEvent*) + 156
3134: 19 0x7f78492b03e6 QObject::event(QEvent*) + 470
3134: 18 0x7f784afb6893 pqTimer::timerEvent(QTimerEvent*) + 35
3134: 17 0x7f78492bf6ff QTimer::timeout(QTimer::QPrivateSignal) + 63
3134: 16 0x7f78492bd378 /usr/lib/libQt5Core.so.5(+0x2bd378) [0x7f78492bd378]
3134: 15 0x7f784b0d24d4 /home/glow/dev/paraview/pv1/build/bin/../lib/libpqApplicationComponents-pv5.10.so.1(+0xd24d4) [0x7f784b0d24d4]
3134: 14 0x7f784b14eabe pqCommandLineOptionsBehavior::processCommandLineOptions() + 128
Running in gdb, I have the following backtrace:
(gdb) bt
#0 0x00007ffff71e76ac in QAbstractItemView::currentChanged(QModelIndex const&, QModelIndex const&) () from /usr/lib/libQt5Widgets.so.5
#1 0x00007ffff58bd378 in ?? () from /usr/lib/libQt5Core.so.5
#2 0x00007ffff58510ef in QItemSelectionModel::currentChanged(QModelIndex const&, QModelIndex const&) () from /usr/lib/libQt5Core.so.5
#3 0x00007ffff58534b3 in QItemSelectionModel::setCurrentIndex(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>) () from /usr/lib/libQt5Core.so.5
#4 0x00007ffff71d918f in QAbstractItemView::setCurrentIndex(QModelIndex const&) ()
from /usr/lib/libQt5Widgets.so.5
#5 0x00007ffff7b8b09b in pqAbstractItemViewEventPlayerBase::playEvent (this=0x555555b940a0,
object=0x55555c2498e0, command=..., arguments=..., eventType=0,
error=@0x7fffffffdc2a: false)
at /home/glow/dev/paraview/pv1/src/ThirdParty/QtTesting/vtkqttesting/pqAbstractItemViewEventPlayerBase.cxx:239
#6 0x00007ffff7bb021c in pqTableViewEventPlayer::playEvent (this=0x555555b940a0,
object=0x55555c2498e0, command=..., arguments=..., eventType=0,
error=@0x7fffffffdc2a: false)
at /home/glow/dev/paraview/pv1/src/ThirdParty/QtTesting/vtkqttesting/pqTableViewEventPlayer.cxx:60
#7 0x00007ffff7b9920e in pqEventPlayer::playEvent (this=0x555555b9e718, objectString=...,
command=..., arguments=..., eventType=0, error=@0x7fffffffdcd0: false)
at /home/glow/dev/paraview/pv1/src/ThirdParty/QtTesting/vtkqttesting/pqEventPlayer.cxx:199
#8 0x00007ffff7b9737b in pqEventDispatcher::playEvent (this=0x555555b9e6d0, indent=0)
at /home/glow/dev/paraview/pv1/src/ThirdParty/QtTesting/vtkqttesting/pqEventDispatcher.cxx:352
Valgrind:
==60371== Invalid read of size 4
==60371== at 0x530870B: QAbstractItemView::currentChanged(QModelIndex const&, QModelIndex const&) (in /usr/lib/libQt5Widgets.so.5.15.5)
==60371== by 0x68BF377: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3898)
==60371== by 0x68530EE: QItemSelectionModel::currentChanged(QModelIndex const&, QModelIndex const&) (moc_qitemselectionmodel.cpp:482)
==60371== by 0x68554B2: QItemSelectionModel::setCurrentIndex(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>) (qitemselectionmodel.cpp:1416)
==60371== by 0x52FA18E: QAbstractItemView::setCurrentIndex(QModelIndex const&) (in /usr/lib/libQt5Widgets.so.5.15.5)
==60371== by 0x6B7A209: pqAbstractItemViewEventPlayerBase::playEvent(QObject*, QString const&, QString const&, int, bool&) (pqAbstractItemViewEventPlayerBase.cxx:242)
==60371== by 0x6B9F44D: pqTableViewEventPlayer::playEvent(QObject*, QString const&, QString const&, int, bool&) (pqTableViewEventPlayer.cxx:60)
==60371== by 0x6B8843F: pqEventPlayer::playEvent(QString const&, QString const&, QString const&, int, bool&) (pqEventPlayer.cxx:199)
==60371== by 0x6B865AC: pqEventDispatcher::playEvent(int) (pqEventDispatcher.cxx:352)
==60371== by 0x6B85E94: pqEventDispatcher::playEvents(pqEventSource&, pqEventPlayer&) (pqEventDispatcher.cxx:240)
==60371== by 0x6BA0655: pqTestUtility::playTests(QStringList const&) (pqTestUtility.cxx:274)
==60371== by 0x6BA03A2: pqTestUtility::playTests(QString const&) (pqTestUtility.cxx:238)
==60371== Address 0x2faf0e50 is 0 bytes inside a block of size 32 free'd
==60371== at 0x4848B5F: operator delete(void*, unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==60371== by 0x68405E7: UnknownInlinedFun (qabstractitemmodel.cpp:89)
==60371== by 0x68405E7: QPersistentModelIndex::operator=(QModelIndex const&) (qabstractitemmodel.cpp:258)
And it correspond to the following xml event:
<pqevent object="pqClientMainWindow/colorMapEditorDock/colorMapEditorPanel/scrollArea/qt_scrollarea_viewport/scrollAreaWidgetContents/PropertiesFrame/Properties/ColorOpacityEditor/ColorTable" command="setCurrent" arguments="1.2" />
The next step would be to build Qt in debug to understand what is going on.