Crash when Exporting TrackingSequence through Python API

Hi ImFusion Support,

When trying to export a tracking file in .csv format from an ultrasound sweep through the Python API, ImFusion crashes. Doing the same through the UI is feasible without problems.

This is the crash stack:


[Core.Platform] ***** Encountered fatal exception: SIGSEGV - Segmentation violation signal, PID 1436625 *****
	stack dump [1]  /lib/x86_64-linux-gnu/libc.so.6+0x43090 [0x7fde17328090]

	stack dump [2]  /usr/bin/../lib/libImFusionLib.so : ImFusion::TrackingSequenceIO::configure(ImFusion::Properties const*)+0x3eb [0x7fde1b85f3db]

	stack dump [3]  /usr/bin/../lib/libImFusionLib.so : ImFusion::Workspace::restoreAlgorithm(ImFusion::ApplicationController&, ImFusion::Workspace::AlgorithmDesc&)+0x1655 [0x7fde1bc23935]

	stack dump [4]  /usr/bin/../lib/libImFusionLib.so : ImFusion::Workspace::executeImpl(ImFusion::ApplicationController&)+0x3ea [0x7fde1bc24c7a]

	stack dump [5]  /usr/bin/../lib/libImFusionLib.so : ImFusion::Workspace::execute(ImFusion::ApplicationController&)+0xf8d [0x7fde1bc2683d]
	stack dump [6]  ImFusionSuite+0x3543b [0x563bc7e1e43b]

	stack dump [7]  /lib/x86_64-linux-gnu/libQt5Core.so.5 : QMetaObject::activate(QObject*, int, int, void**)+0x928 [0x7fde17986328]

	stack dump [8]  /lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QAbstractButton::clicked(bool)+0x46 [0x7fde18467806]
	stack dump [9]  /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x25fa2e [0x7fde18467a2e]
	stack dump [10]  /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x260e73 [0x7fde18468e73]

	stack dump [11]  /lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QAbstractButton::mouseReleaseEvent(QMouseEvent*)+0xe5 [0x7fde18469035]

	stack dump [12]  /lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QWidget::event(QEvent*)+0x286 [0x7fde183b52b6]

	stack dump [13]  /lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QApplicationPrivate::notify_helper(QObject*, QEvent*)+0x86 [0x7fde18372a66]

	stack dump [14]  /lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QApplication::notify(QObject*, QEvent*)+0x583 [0x7fde1837c343]

	stack dump [15]  /lib/x86_64-linux-gnu/libQt5Core.so.5 : QCoreApplication::notifyInternal2(QObject*, QEvent*)+0x18a [0x7fde1795a80a]

	stack dump [16]  /lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool)+0x1b7 [0x7fde1837b457]
	stack dump [17]  /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1c935d [0x7fde183d135d]
	stack dump [18]  /lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1cc1ec [0x7fde183d41ec]

	stack dump [19]  /lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QApplicationPrivate::notify_helper(QObject*, QEvent*)+0x86 [0x7fde18372a66]

	stack dump [20]  /lib/x86_64-linux-gnu/libQt5Widgets.so.5 : QApplication::notify(QObject*, QEvent*)+0x330 [0x7fde1837c0f0]

	stack dump [21]  /lib/x86_64-linux-gnu/libQt5Core.so.5 : QCoreApplication::notifyInternal2(QObject*, QEvent*)+0x18a [0x7fde1795a80a]

	stack dump [22]  /lib/x86_64-linux-gnu/libQt5Gui.so.5 : QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*)+0x6e3 [0x7fde17d437d3]

	stack dump [23]  /lib/x86_64-linux-gnu/libQt5Gui.so.5 : QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*)+0x25b [0x7fde17d4510b]

	stack dump [24]  /lib/x86_64-linux-gnu/libQt5Gui.so.5 : QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>)+0xbb [0x7fde17d1f35b]
	stack dump [25]  /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5+0x7932e [0x7fde0a03432e]
	stack dump [26]  /lib/x86_64-linux-gnu/libglib-2.0.so.0g_main_context_dispatch+0x27d [0x7fde1288f17d]
	stack dump [27]  /lib/x86_64-linux-gnu/libglib-2.0.so.0+0x52400 [0x7fde1288f400]
	stack dump [28]  /lib/x86_64-linux-gnu/libglib-2.0.so.0g_main_context_iteration+0x33 [0x7fde1288f4a3]

	stack dump [29]  /lib/x86_64-linux-gnu/libQt5Core.so.5 : QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)+0x65 [0x7fde179b2435]

	stack dump [30]  /lib/x86_64-linux-gnu/libQt5Core.so.5 : QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)+0x12b [0x7fde179593ab]

	stack dump [31]  /lib/x86_64-linux-gnu/libQt5Core.so.5 : QCoreApplication::exec()+0x96 [0x7fde17961116]
	stack dump [32]  ImFusionSuite+0x1e131 [0x563bc7e07131]
	stack dump [33]  /lib/x86_64-linux-gnu/libc.so.6__libc_start_main+0xf3 [0x7fde17309083]
	stack dump [34]  ImFusionSuite+0x1eade [0x563bc7e07ade]

The code to reproduce it, is this one:

import imfusion as imf


if not imf.app:
    imf.app = imf.ConsoleController()

def func():
    (data0,) = imf.app.open('/home/felix/projects/acquisition/Patient-06/Patient-06-01.imf')
    (data1,) = imf.app.executeAlgorithm('Extract Tracking Sequence', [data0], {
        "Check Distance when Removing Timestamps": False,
        "Delete Original": False,
        "Extract All": False,
        "Remove Timestamp": False,
        "Tracking Index": -1
        })
    imf.app.executeAlgorithm('Tracking Sequence', [data1], {
        "location": "/home/felix/projects/acquisition/Patient-06/tracking_011.csv",
        "noQuality": "False",
        "poseColumns": "",
        "qualityColumn": "",
        "showDialog": "True",
        "timestampColumn": "",
        "timestampFront": "False",
        "translationScaleFactor": 1,
        "transposeMatrix": "False"
        })

if __name__ == '__main__':
    func()

I am working on Ubuntu 20 with ImFusion Academic installer Version 3.5.9.

Thank you!

Hi Felix,

thanks for reaching out.
I was able to reproduce the issue on my end. There is a problem with the algorithm configuration. The Suite uses a slightly different pathway so it works there. This issue only occurs with csv exports. The only workaround I can see currently is to use “.ts” or “.txt” as the file extension in “location” instead but we will fix this bug in the next release.
Using “.ts” will give you the same output as “.csv” but with tab-separation instead of comma-separation.

Cheers,
Ilja

Hey Ilja,

thanks for checking! I will use the .ts file, thanks for the hint!

Best,
Felix