-RM-67-MR-Deleting ClusterDisplay crashes OW with Assertion.
The problem is that there are still too many references to the module. This is why the assertion fails.
How to reproduce:
- start ow with t1 image
- create ClusterDisplay?
- delete ClusterDisplay?
*INFO [Kernel] Starting Kernel *INFO [GE] Initializing OpenSceneGraph Root Node *INFO [GE] Initializing OpenSceneGraph Root Node *INFO [GE] Initializing OpenSceneGraph Root Node QWidget::setMinimumSize: (/QDockWidget) Negative sizes (0,-1) are not possible *INFO [GE] Starting Graphics Engine *DEBUG [WQtGLWidget(Axial View)] Painted the first time. *DEBUG [WQtGLWidget(Coronal View)] Painted the first time. *DEBUG [ModuleFactory] Creating new instance of prototype "Data Module". *INFO [ModuleContainer (KernelRootContainer)] Adding module "Data Module" to container. *INFO [ModuleContainer (KernelRootContainer)] Associated module "Data Module" with container. *INFO [Module (Data Module)] Starting module main method. *DEBUG [Data Module] Loading data from "/home/math/MPI-CBS/mr188/mr188_t1_np.nii.gz". *DEBUG [WReaderNIfTI] Load as WDataSetScalar *DEBUG [WDataTexture3D] Texture scaling information for data in [0, 255]: scaling factor=255 *DEBUG [WDataTexture3D] Resolution is 160x200x160 *DEBUG [Data Module] Loading data done. *DEBUG [WGEColormapping] Registering texture. *DEBUG [ControlPanel] Inserting module Data Module to control panel. *DEBUG [ControlPanel] Activating module Data Module in control panel. *DEBUG [GUI] Auto Display active and Data module added. The proper module will be added. *DEBUG [ModuleFactory] Creating new instance of prototype "Navigation Slices". *INFO [ModuleContainer (KernelRootContainer)] Adding module "Navigation Slices" to container. *INFO [ModuleContainer (KernelRootContainer)] Associated module "Navigation Slices" with container. *INFO [Module (Navigation Slices)] Starting module main method. *DEBUG [WDataTexture3D] Handling W_DT_UINT8 *DEBUG [WDataTexture3D] Texture for scalar char data set. *DEBUG [WGEShader] Reloading vertex shader "WMNavSlices-vertex.glsl" *DEBUG [WGEShader] Reloading fragment shader "WMNavSlices-fragment.glsl" *DEBUG [WGEShader] Reloading geometry shader "WMNavSlices-geometry.glsl" *DEBUG [ControlPanel] Inserting module Navigation Slices to control panel. *DEBUG [ControlPanel] Activating module Navigation Slices in control panel. *DEBUG [ModuleFactory] Creating new instance of prototype "Cluster Param Display". *INFO [ModuleContainer (Cluster Param Display)] Constructing module container. *INFO [ModuleContainer (KernelRootContainer)] Adding module "Data Module" to container. *INFO [ModuleContainer (KernelRootContainer)] Adding module "Data Module" to container not needed. Its already inside. *INFO [ModuleContainer (KernelRootContainer)] Adding module "Cluster Param Display" to container. *INFO [ModuleContainer (KernelRootContainer)] Associated module "Cluster Param Display" with container. *INFO [Module (Cluster Param Display)] Starting module main method. *DEBUG [ModuleFactory] Creating new instance of prototype "Deterministic Tract Clustering". *INFO [ModuleContainer (Cluster Param Display)] Adding module "Deterministic Tract Clustering" to container. *INFO [ModuleContainer (Cluster Param Display)] Associated module "Deterministic Tract Clustering" with container. *INFO [Module (Deterministic Tract Clustering)] Starting module main method. *DEBUG [ModuleFactory] Creating new instance of prototype "Voxelizer". *DEBUG [ControlPanel] Inserting module Cluster Param Display to control panel. *INFO [ModuleContainer (Cluster Param Display)] Adding module "Voxelizer" to container. *INFO [ModuleContainer (Cluster Param Display)] Associated module "Voxelizer" with container. *INFO [Module (Voxelizer)] Starting module main method. *DEBUG [ModuleFactory] Creating new instance of prototype "Gauss Filtering". *INFO [ModuleContainer (Cluster Param Display)] Adding module "Gauss Filtering" to container. *INFO [ModuleContainer (Cluster Param Display)] Associated module "Gauss Filtering" with container. *INFO [Module (Gauss Filtering)] Starting module main method. *DEBUG [ModuleFactory] Creating new instance of prototype "Isosurface". *DEBUG [Gauss Filtering] Waiting ... *INFO [ModuleContainer (Cluster Param Display)] Adding module "Isosurface" to container. *INFO [ModuleContainer (Cluster Param Display)] Associated module "Isosurface" with container. *INFO [Module (Isosurface)] Starting module main method. *DEBUG [Isosurface] Waiting ... *DEBUG [ModuleFactory] Creating new instance of prototype "Cluster Slicer". *INFO [ModuleContainer (Cluster Param Display)] Adding module "Cluster Slicer" to container. *INFO [ModuleContainer (Cluster Param Display)] Associated module "Cluster Slicer" with container. *INFO [Module (Cluster Slicer)] Starting module main method. *DEBUG [Cluster Slicer] Waiting... *DEBUG [ModuleFactory] Creating new instance of prototype "Triangle Mesh Renderer". *INFO [ModuleContainer (Cluster Param Display)] Adding module "Triangle Mesh Renderer" to container. *INFO [ModuleContainer (Cluster Param Display)] Associated module "Triangle Mesh Renderer" with container. *INFO [Module (Triangle Mesh Renderer)] Starting module main method. *DEBUG [Cluster Param Display] Start step submodule properties *DEBUG [Triangle Mesh Renderer] Waiting ... *DEBUG [Cluster Param Display] Submodule properties set *DEBUG [Cluster Param Display] Start wiring *DEBUG [Cluster Slicer] Invalid data. Waiting for data change again. *INFO [ModuleContainer (KernelRootContainer)] Connecting Cluster Slicer:paramInput with Cluster Param Display:[FWD]paramInput *DEBUG [Cluster Slicer] Waiting... *INFO [ModuleContainer (Cluster Param Display)] Connecting Voxelizer:voxelOutput with Gauss Filtering:in *DEBUG [Cluster Slicer] Invalid data. Waiting for data change again. *DEBUG [Cluster Slicer] Waiting... *INFO [ModuleContainer (Cluster Param Display)] Connecting Gauss Filtering:out with Isosurface:values *DEBUG [Gauss Filtering] Received Data. *INFO [ModuleContainer (Cluster Param Display)] Connecting Deterministic Tract Clustering:clusterOutput with Cluster Slicer:clusterInput *DEBUG [Isosurface] Waiting for data ... *INFO [ModuleContainer (Cluster Param Display)] Connecting Gauss Filtering:out with Cluster Slicer:clusterDSInput *DEBUG [Gauss Filtering] Resetting output. *DEBUG [Isosurface] Waiting ... *INFO [ModuleContainer (Cluster Param Display)] Connecting Isosurface:surface mesh with Cluster Slicer:meshInput *DEBUG [Isosurface] Waiting for data ... *DEBUG [Gauss Filtering] Waiting ... *DEBUG [Isosurface] Waiting ... *DEBUG [Cluster Slicer] Invalid data. Waiting for data change again. *INFO [ModuleContainer (Cluster Param Display)] Connecting Cluster Slicer:meshOutput with Triangle Mesh Renderer:mesh *DEBUG [Cluster Slicer] Waiting... *DEBUG [Triangle Mesh Renderer] Invalid Data. Disabling. *INFO [ModuleContainer (Cluster Param Display)] Connecting Cluster Slicer:colorMapOutput with Triangle Mesh Renderer:colorMap *DEBUG [Triangle Mesh Renderer] Waiting ... *INFO [ModuleContainer (Cluster Param Display)] Connecting Deterministic Tract Clustering:clusterOutput with Voxelizer:tractInput *DEBUG [Triangle Mesh Renderer] Invalid Data. Disabling. *INFO [ModuleContainer (KernelRootContainer)] Connecting Deterministic Tract Clustering:tractInput with Cluster Param Display:[FWD]fiberInput *DEBUG [Triangle Mesh Renderer] Waiting ... *DEBUG [Cluster Param Display] Wiring done *INFO [ModuleContainer (KernelRootContainer)] Connecting Data Module:out with Cluster Param Display:paramInput *DEBUG [Data Module] Connected "Data Module:out" to "Cluster Param Display:paramInput". *DEBUG [Cluster Slicer] Invalid data. Waiting for data change again. *DEBUG [Cluster Slicer] Waiting... *DEBUG [ControlPanel] Activating module Cluster Param Display in control panel. *WARNING [ModuleContainer (KernelRootContainer)] Deep removal of modules is not yet implemented. *DEBUG [ModuleContainer (KernelRootContainer)] Removing module "Cluster Param Display" from container. *INFO [ModuleContainer (KernelRootContainer)] Disconnecting Data Module:out from Cluster Param Display:paramInput *DEBUG [Data Module] Disconnected "Cluster Param Display:paramInput" from "Data Module:out". *DEBUG [ControlPanel] Removing module "Cluster Param Display" from Tree. *DEBUG [ControlPanel] Waiting for module "Cluster Param Display" to finish before deleting. *DEBUG [ControlPanel] Deleting module "Cluster Param Display" from Tree. *DEBUG [ControlPanel] Deleting module "Cluster Param Display" from Tree. *ERROR [ControlPanel] Removed module has strange usage count: 7. Should be 1 here. Module reference is held by someone else. Exception thrown! Callstack's backtrace: trace: WException::WException(std::string const&) -> /home/math/repos/OpenWalnut/build/release/lib/libOWcommon.so(_ZN10WExceptionC1ERKSs+0x135) [0x7fab07a6a845] trace: wAssertFailed(std::string const&, std::string const&, unsigned long, std::string const&) -> /home/math/repos/OpenWalnut/build/release/lib/libOWcommon.so(_Z13wAssertFailedRKSsS0_mS0_+0x26f) [0x7fab079eef7f] trace: WQtControlPanel::event(QEvent*) -> /home/math/repos/OpenWalnut/build/release/lib/libOWguiqt4.so(_ZN15WQtControlPanel5eventEP6QEvent+0xff1) [0x7fab07da86b1] trace: QApplicationPrivate::notify_helper(QObject*, QEvent*) -> /usr/lib/libQtGui.so.4(_ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent+0xac) [0x7fab02b8cfdc] trace: QApplication::notify(QObject*, QEvent*) -> /usr/lib/libQtGui.so.4(_ZN12QApplication6notifyEP7QObjectP6QEvent+0x14d) [0x7fab02b92aed] trace: QCoreApplication::notifyInternal(QObject*, QEvent*) -> /usr/lib/libQtCore.so.4(_ZN16QCoreApplication14notifyInternalEP7QObjectP6QEvent+0x8c) [0x7fab03825cdc] trace: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) -> /usr/lib/libQtCore.so.4(_ZN23QCoreApplicationPrivate16sendPostedEventsEP7QObjectiP11QThreadData+0x2d2) [0x7fab03828c22] trace: () -> /usr/lib/libQtCore.so.4(+0x195653) [0x7fab03852653] trace: g_main_context_dispatch() -> /lib/libglib-2.0.so.0(g_main_context_dispatch+0x1f2) [0x7faafd372342] trace: () -> /lib/libglib-2.0.so.0(+0x442a8) [0x7faafd3762a8] trace: g_main_context_iteration() -> /lib/libglib-2.0.so.0(g_main_context_iteration+0x6c) [0x7faafd37645c] trace: QEventDispatcherGlib::processEvents(QFlags) -> /usr/lib/libQtCore.so.4(_ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE+0x73) [0x7fab03852193] trace: () -> /usr/lib/libQtGui.so.4(+0x26aa4e) [0x7fab02c3fa4e] trace: QEventLoop::processEvents(QFlags) -> /usr/lib/libQtCore.so.4(_ZN10QEventLoop13processEventsE6QFlagsINS_17ProcessEventsFlagEE+0x32) [0x7fab03824a02] trace: QEventLoop::exec(QFlags) -> /usr/lib/libQtCore.so.4(_ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE+0xdc) [0x7fab03824dec] trace: QCoreApplication::exec() -> /usr/lib/libQtCore.so.4(_ZN16QCoreApplication4execEv+0xbb) [0x7fab03828ebb] trace: WQt4Gui::run() -> /home/math/repos/OpenWalnut/build/release/lib/libOWguiqt4.so(_ZN7WQt4Gui3runEv+0x1e9c) [0x7fab07d5688c] trace: main() -> bin/walnut(main+0x220) [0x402640] trace: __libc_start_main() -> /lib/libc.so.6(__libc_start_main+0xfe) [0x7fab01e6dd8e] trace: ??? -> bin/walnut() [0x402259] Qt has caught an exception thrown from an event handler. Throwing exceptions from an event handler is not supported in Qt. You must reimplement QApplication::notify() and catch all exceptions there. terminate called after throwing an instance of 'WException' what(): Assertion failed: false (in file /home/math/repos/OpenWalnut/src/gui/qt4/controlPanel/WQtControlPanel.cpp at line 414), Message: Removed module has strange usage count. Should be 1 here. Module reference is held by someone else. zsh: abort bin/walnut
(from redmine: created on 2011-09-19, closed on 2012-04-03)