View Issue Details

IDProjectCategoryView StatusLast Update
0004045Slicer4Core: Scripting (Wrapping, Python)public2018-03-02 11:06
Reportermsmolens Assigned Tomsmolens  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Product Version 
Target VersionSlicer 4.5.0-1Fixed in VersionSlicer 4.5.0-1 
Summary0004045: py_StandaloneEditorWidgetTest crashes on exit in PythonQt
Description

After revision 24474 [1] test py_StandaloneEditorWidgetTest crashes on exit during PythonQt cleanup. See stack in Additional Information.

[1] http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=24474

Steps To Reproduce

Run py_StandaloneEditorWidgetTest.

Additional Information

QtCored4.dll!operator new[](unsigned int64 count) Line 7 C++
QtCored4.dll!QHashData::detach_helper2(void (QHashData::Node , void ) node_duplicate, void (QHashData::Node ) node_delete, int nodeSize, int nodeAlign) Line 221 C++
PythonQt.dll!QHash<QObject
ptr64,PythonQtSignalReceiver * ptr64>::detach_helper() Line 584 C++
PythonQt.dll!QHash<QObject *
ptr64,PythonQtSignalReceiver __ptr64>::detach() Line 303 C++
PythonQt.dll!QHash<QObject
ptr64,PythonQtSignalReceiver * ptr64>::remove(QObject const & akey) Line 790 C++
PythonQt.dll!PythonQtPrivate::removeSignalEmitter(QObject
obj) Line 1400 C++
PythonQt.dll!PythonQtSignalReceiver::~PythonQtSignalReceiver() Line 176 C++
[External Code]
QtCored4.dll!QObjectPrivate::deleteChildren() Line 1935 C++
QtCored4.dll!QObject::~QObject() Line 956 C++
PythonQt.dll!PythonQtPrivate::~PythonQtPrivate() Line 346 C++
[External Code]
PythonQt.dll!PythonQt::~PythonQt() Line 327 C++
[External Code]
PythonQt.dll!PythonQt::cleanup() Line 254 C++
CTKScriptingPythonCore.dll!ctkAbstractPythonManager::~ctkAbstractPythonManager() Line 93 C++
qSlicerBaseQTCore.dll!qSlicerCorePythonManager::~qSlicerCorePythonManager() Line 60 C++
qSlicerBaseQTGUI.dll!qSlicerPythonManager::~qSlicerPythonManager() Line 37 C++
[External Code]
qSlicerBaseQTCore.dll!QtSharedPointer::ExternalRefCount<qSlicerCorePythonManager>::deref(QtSharedPointer::ExternalRefCountData d, qSlicerCorePythonManager value) Line 342 C++
qSlicerBaseQTCore.dll!QtSharedPointer::ExternalRefCount<qSlicerCorePythonManager>::deref() Line 336 C++
qSlicerBaseQTCore.dll!QtSharedPointer::ExternalRefCount<qSlicerCorePythonManager>::~ExternalRefCount<qSlicerCorePythonManager>() Line 401 C++
[External Code]
qSlicerBaseQTCore.dll!QSharedPointer<qSlicerCorePythonManager>::clear() Line 543 C++
qSlicerBaseQTCore.dll!qSlicerCoreApplicationPrivate::~qSlicerCoreApplicationPrivate() Line 145 C++
qSlicerBaseQTGUI.dll!qSlicerApplicationPrivate::~qSlicerApplicationPrivate() Line 162 C++
[External Code]
qSlicerBaseQTCore.dll!QScopedPointerDeleter<qSlicerCoreApplicationPrivate>::cleanup(qSlicerCoreApplicationPrivate pointer) Line 62 C++
qSlicerBaseQTCore.dll!QScopedPointer<qSlicerCoreApplicationPrivate,QScopedPointerDeleter<qSlicerCoreApplicationPrivate> >::~QScopedPointer<qSlicerCoreApplicationPrivate,QScopedPointerDeleter<qSlicerCoreApplicationPrivate> >() Line 101 C++
qSlicerBaseQTCore.dll!qSlicerCoreApplication::~qSlicerCoreApplication() Line 704 C++
qSlicerBaseQTGUI.dll!qSlicerApplication::~qSlicerApplication() Line 329 C++
SlicerApp-real.exe!`anonymous namespace'::SlicerAppMain(int argc, char
argv) Line 220 C++
SlicerApp-real.exe!main(int argc, char
* argv) Line 255 C++

TagsNo tags attached.

Related Changesets

Import 2017-06-07 23:51:09: master 97118990

2015-09-16 11:47:06

msmolens

Details Diff
ENH: Update CTK (includes PythonQt crash fix, DICOM browser enhancement)

Fixes Issue 0004045 (py_StandaloneEditorWidgetTest crashes on exit in PythonQt)
Fixes Issue 0003792 (unable to remove one series of an exam in the dicom menu)

// -------------------------
commit cbf890f8eda122b8dca8e67d2bf75e85640ab297
Author: Max Smolens <max.smolens@kitware.com>
Date: Tue Sep 15 15:45:30 2015 -0400

Fix PythonQtSignalReceiver crash during cleanup

This commit fixes a crash during PythonQt::cleanup(). While destroying the
PythonQtPrivate instance, any remaining PythonQtSignalReceivers that are kept
alive only by their parent object will be destroyed. The crash occurs when
PythonQtSignalReceiver's destructor calls back into
PythonQtPrivate::removeSignalEmitter() when the PythonQtPrivate instance is
mostly destroyed.

Includes test case that crashes without the fix.
// -------------------------

// -------------------------
commit ea653d2cfc5be6dc846a5a54f75543af7dfd4445
Author: Nicole Aucoin <nicole@bwh.harvard.edu>
Date: Mon Aug 3 18:51:07 2015 -0400

ENH: add ability to delete individual series, studies, patients

Add to the browser Remove button the information that it will
delete all selected series, studies, patients.

Add support for right click custom context menus in the
patient, study, series tables. Translate the local points
to global ones in terms of the table view and signal
right clicked with the global position so that the browser
can position the context menu appropriately.

Add the context menu to the DICOM browser to allow
deleting at just one level, with number of items
selected information, and a confirmation message box with descriptive
information that can be set to not be shown again.

Added a test for the DICOM browser, with the ability
to open it in interactive mode to test the right clicks.

Add query wrappers for the DICOM database to get the patient name
as well as descriptions for series and study. They will return empty
strings on failure.
Use the new queries to give more meaningful information on the right
click pop up menu in the DICOM browser.
Added a test for the new DICOM database accessors.

Slicer bug:
http://www.na-mic.org/Bug/view.php?id=3792

When Slicer makes a custom DICOM browser, it moves the table views
directly into the new window, extracting them from the DICOM
table.
With this change, the table view takes care of mapping the point to
global, the table manager propagates the signal as a table specific
XRightClicked signal, and the browser responds to it with a table
specific context menu.

Slicer Issue 0003792
// -------------------------

From: Max Smolens <max.smolens@kitware.com>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@24554 3bd1e089-480b-0410-8dfb-8563597acbee
mod - SuperBuild/External_CTK.cmake Diff File

Issue History

Date Modified Username Field Change
2015-09-15 06:45 msmolens New Issue
2015-09-15 06:45 msmolens Status new => assigned
2015-09-15 06:45 msmolens Assigned To => msmolens
2015-09-16 08:26 msmolens Note Added: 0013277
2015-09-16 08:26 msmolens Status assigned => resolved
2015-09-16 08:26 msmolens Fixed in Version => Slicer 4.5.0-1
2015-09-16 08:26 msmolens Resolution open => fixed
2017-06-10 08:51 msmolens Changeset attached => Slicer master 97118990
2018-03-02 11:06 jcfr Status resolved => closed