View Issue Details

IDProjectCategoryView StatusLast Update
0002915Slicer4Core: GUIpublic2017-06-07 23:27
Reporterpieper Assigned Tofinetjul  
PrioritynormalSeveritycrashReproducibilitysometimes
Status closedResolutionfixed 
Product Version 
Target VersionSlicer 4.3.0Fixed in VersionSlicer 4.3.0 
Summary0002915: crash while running command line module
Description

I have gotten this crash a couple times on a fresh windows build (x64, debug, VS2008) with ITKv4 - but I don't know for sure that it has anything with ITK based on stack trace.

Steps To Reproduce

Start Slicer

  • load MR-Head
  • go to Filtering->Threshold Scalar Volume
  • create a new output label map
  • pick a lower threshold of 50 (probably not needed)
  • click apply a few times.

First run works, but later it crashes with attached stack.

Additional Information

vtkCommon.dll!vtkInformation::GetAsObjectBase(vtkInformationKey key=0x000000000464c670) Line 166 + 0x15 bytes C++
vtkCommon.dll!vtkInformationKeyToInformationFriendship::GetAsObjectBase(vtkInformation
info=0x0000000000000000, vtkInformationKey key=0x000000000464c670) Line 33 C++
vtkCommon.dll!vtkInformationKey::GetAsObjectBase(vtkInformation
info=0x0000000000000000) Line 94 C++
vtkCommon.dll!vtkInformationDataObjectKey::Get(vtkInformation info=0x0000000000000000) Line 49 C++
vtkCommon.dll!vtkInformation::Get(vtkInformationDataObjectKey
key=0x000000000464c670) Line 415 + 0x37 bytes C++
vtkFiltering.dll!vtkThreadedImageAlgorithm::RequestData(vtkInformation request=0x0000000016f8c760, vtkInformationVector inputVector=0x0000000016f36de0, vtkInformationVector outputVector=0x0000000016f35d50) Line 275 + 0x16 bytes C++
vtkFiltering.dll!vtkImageAlgorithm::ProcessRequest(vtkInformation request=0x0000000016f8c760, vtkInformationVector inputVector=0x0000000016f36de0, vtkInformationVector outputVector=0x0000000016f35d50) Line 102 + 0x22 bytes C++
vtkFiltering.dll!vtkExecutive::CallAlgorithm(vtkInformation request=0x0000000016f8c760, int direction=1, vtkInformationVector inInfo=0x0000000016f36de0, vtkInformationVector outInfo=0x0000000016f35d50) Line 747 + 0x39 bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::ExecuteData(vtkInformation request=0x0000000016f8c760, vtkInformationVector inInfo=0x0000000016f36de0, vtkInformationVector outInfo=0x0000000016f35d50) Line 507 + 0x2e bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::ProcessRequest(vtkInformation request=0x0000000016f8c760, vtkInformationVector inInfoVec=0x0000000016f36de0, vtkInformationVector outInfoVec=0x0000000016f35d50) Line 279 + 0x22 bytes C++
vtkFiltering.dll!vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation request=0x0000000016f8c760, vtkInformationVector inInfoVec=0x0000000016f36de0, vtkInformationVector outInfoVec=0x0000000016f35d50) Line 276 + 0x25 bytes C++
vtkFiltering.dll!vtkExecutive::ForwardUpstream(vtkInformation request=0x0000000016f8c760) Line 646 + 0x38 bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::ProcessRequest(vtkInformation
request=0x0000000016f8c760, vtkInformationVector inInfoVec=0x0000000016f3ed70, vtkInformationVector outInfoVec=0x0000000016de4b10) Line 265 + 0x18 bytes C++
vtkFiltering.dll!vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation
request=0x0000000016f8c760, vtkInformationVector inInfoVec=0x0000000016f3ed70, vtkInformationVector outInfoVec=0x0000000016de4b10) Line 276 + 0x25 bytes C++
vtkFiltering.dll!vtkExecutive::ForwardUpstream(vtkInformation
request=0x0000000016f8c760) Line 646 + 0x38 bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::ProcessRequest(vtkInformation request=0x0000000016f8c760, vtkInformationVector inInfoVec=0x0000000011addac0, vtkInformationVector outInfoVec=0x0000000016de4dd0) Line 265 + 0x18 bytes C++
vtkFiltering.dll!vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation request=0x0000000016f8c760, vtkInformationVector inInfoVec=0x0000000011addac0, vtkInformationVector outInfoVec=0x0000000016de4dd0) Line 276 + 0x25 bytes C++
vtkFiltering.dll!vtkExecutive::ForwardUpstream(vtkInformation request=0x0000000016f8c760) Line 646 + 0x38 bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::ProcessRequest(vtkInformation
request=0x0000000016f8c760, vtkInformationVector inInfoVec=0x0000000011c867b0, vtkInformationVector outInfoVec=0x0000000016f25570) Line 265 + 0x18 bytes C++
vtkFiltering.dll!vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation
request=0x0000000016f8c760, vtkInformationVector inInfoVec=0x0000000011c867b0, vtkInformationVector outInfoVec=0x0000000016f25570) Line 276 + 0x25 bytes C++
vtkFiltering.dll!vtkExecutive::ForwardUpstream(vtkInformation
request=0x0000000016f8c760) Line 646 + 0x38 bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::ProcessRequest(vtkInformation request=0x0000000016f8c760, vtkInformationVector inInfoVec=0x0000000011fec810, vtkInformationVector outInfoVec=0x0000000011fec2a0) Line 265 + 0x18 bytes C++
vtkFiltering.dll!vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation request=0x0000000016f8c760, vtkInformationVector inInfoVec=0x0000000011fec810, vtkInformationVector outInfoVec=0x0000000011fec2a0) Line 276 + 0x25 bytes C++
vtkFiltering.dll!vtkDemandDrivenPipeline::UpdateData(int outputPort=0) Line 450 C++
vtkFiltering.dll!vtkStreamingDemandDrivenPipeline::Update(int port=0) Line 326 + 0x1e bytes C++
vtkFiltering.dll!vtkDataObject::Update() Line 1032 C++
vtkRendering.dll!vtkImageMapper::RenderStart(vtkViewport viewport=0x0000000011f8f580, vtkActor2D actor=0x0000000011f85c40) Line 237 C++
vtkRendering.dll!vtkOpenGLImageMapper::RenderOverlay(vtkViewport viewport=0x0000000011f8f580, vtkActor2D actor=0x0000000011f85c40) Line 45 + 0x14 bytes C++
vtkFiltering.dll!vtkActor2D::RenderOverlay(vtkViewport viewport=0x0000000011f8f580) Line 105 C++
vtkRendering.dll!vtkRenderer::UpdateGeometry() Line 660 + 0x41 bytes C++
vtkRendering.dll!vtkOpenGLRenderer::DeviceRender() Line 250 C++
vtkRendering.dll!vtkRenderer::Render() Line 352 C++
vtkRendering.dll!vtkRendererCollection::Render() Line 53 C++
vtkRendering.dll!vtkRenderWindow::DoStereoRender() Line 726 C++
vtkRendering.dll!vtkRenderWindow::DoFDRender() Line 694 C++
vtkRendering.dll!vtkRenderWindow::DoAARender() Line 581 C++
vtkRendering.dll!vtkRenderWindow::Render() Line 394 C++
CTKVisualizationVTKWidgets.dll!ctkVTKAbstractView::forceRender() Line 227 C++
CTKVisualizationVTKWidgets.dll!ctkVTKAbstractView::qt_static_metacall(QObject
_o=0x0000000011f7ff10, QMetaObject::Call _c=InvokeMetaMethod, int _id=1, void _a=0x0000000000a2a1f0) Line 90 + 0x13 bytes C++
QtCored4.dll!QMetaObject::activate(QObject sender=0x0000000011f8ed00, const QMetaObject m=0x0000000068799c08, int local_signal_index=0, void argv=0x0000000000000000) Line 3549 C++
QtCored4.dll!QTimer::timeout() Line 149 C++
QtCored4.dll!QTimer::timerEvent(QTimerEvent e=0x0000000000a2aed8) Line 282 C++
QtCored4.dll!QObject::event(QEvent
e=0x0000000000a2aed8) Line 1158 C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject receiver=0x0000000011f8ed00, QEvent e=0x0000000000a2aed8) Line 4551 + 0x15 bytes C++
QtGuid4.dll!QApplication::notify(QObject receiver=0x0000000011f8ed00, QEvent e=0x0000000000a2aed8) Line 3933 + 0x1d bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject receiver=0x0000000011f8ed00, QEvent event=0x0000000000a2aed8) Line 915 + 0x26 bytes C++
QtCored4.dll!QCoreApplication::sendEvent(QObject receiver=0x0000000011f8ed00, QEvent event=0x0000000000a2aed8) Line 231 + 0x50 bytes C++
QtCored4.dll!QEventDispatcherWin32::event(QEvent e=0x000000001abe8e10) Line 1138 C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject
receiver=0x0000000004606be0, QEvent e=0x000000001abe8e10) Line 4551 + 0x15 bytes C++
QtGuid4.dll!QApplication::notify(QObject
receiver=0x0000000004606be0, QEvent e=0x000000001abe8e10) Line 3933 + 0x1d bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject
receiver=0x0000000004606be0, QEvent event=0x000000001abe8e10) Line 915 + 0x26 bytes C++
QtCored4.dll!QCoreApplication::sendEvent(QObject
receiver=0x0000000004606be0, QEvent event=0x000000001abe8e10) Line 231 + 0x50 bytes C++
QtCored4.dll!QCoreApplicationPrivate::sendPostedEvents(QObject
receiver=0x0000000000000000, int event_type=0, QThreadData data=0x0000000003370580) Line 1539 + 0xf bytes C++
QtCored4.dll!qt_internal_proc(HWND__
hwnd=0x00000000018807aa, unsigned int message=1025, unsigned int64 wp=0, int64 lp=0) Line 498 C++
user32.dll!00000000772a9bd1()
[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]
user32.dll!00000000772a98da()
QtCored4.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags=0x0000000000a2efa0) Line 810 C++
QtGuid4.dll!QGuiEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag>
flags=0x0000000000a2efec) Line 1202 + 0x27 bytes C++
QtCored4.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags=0x0000000000a2f068) Line 150 C++
QtCored4.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag>
flags=0x0000000000a2f0f0) Line 204 + 0x59 bytes C++
QtCored4.dll!QCoreApplication::exec() Line 1187 + 0x23 bytes C++
QtGuid4.dll!QApplication::exec() Line 3813 C++
SlicerApp-real.exe!`anonymous namespace'::SlicerAppMain(int argc=1, char argv=0x0000000004600330) Line 191 + 0x6 bytes C++
SlicerApp-real.exe!WinMain(HINSTANCE * hInstance=0x000000013f620000, HINSTANCE hPrevInstance=0x0000000000000000, char lpCmdLine=0x0000000000bf753b, int nShowCmd=1) Line 210 + 0xe bytes C++
SlicerApp-real.exe!__tmainCRTStartup() Line 574 + 0x42 bytes C
SlicerApp-real.exe!WinMainCRTStartup() Line 399 C
kernel32.dll!000000007718652d()
ntdll.dll!000000007787c521()

TagsNo tags attached.

Relationships

related to 0002966 closedfinetjul Overwriting an output volume triggers VTK error 

Activities

pieper

pieper

2013-02-05 09:39

administrator   ~0007820

I suspect that what's happened here is that the forceRender timeout is happening while the image are still being updated - on windows it seems there are several refreshes going on while the data is being loaded, and if the event loop has a chance to fire the timer while the vtk pipeline is in an inconsistent state it can lead to this crash.

pieper

pieper

2013-02-05 09:41

administrator   ~0007821

I did some more experimentation and found that I could click apply repeatedly for 20 or 30 times but eventually I got the crash with the same stack trace as reported above.

finetjul

finetjul

2013-02-05 10:18

administrator   ~0007822

I can't think of why there could be a refresh while the output of a CLI is being updated. Both are supposed to happen in the same thread.

pieper

pieper

2013-02-05 10:29

administrator   ~0007823

I'm not sure either, but there it is :)

What I guess happens is that something is triggering processEvents or returning control to the event loop as a byproduct of the load process. I guess I'll try on mac also to see if I get the same behavior.

<testing...>

There is definitely something funny going on, because if you follow the directions on how to reproduce the issue and you repeatedly click the Apply button you can see the sliders in the slice controllers jump around, but they have no reason to do that because they should "know the right answer" before they are ever rendered.

I also notice that on mac I get the following error message, which must also relate to rendering when the pipeline isn't set up yet:

ERROR: In /Users/pieper/slicer4/latest/Slicer-superbuild/VTK/Filtering/vtkDemandDrivenPipeline.cxx, line 727
vtkStreamingDemandDrivenPipeline (0x14289d750): Input port 0 of algorithm vtkImageResliceMask(0x1413a8360) has 0 connections but is not optional.

finetjul

finetjul

2013-02-05 13:05

administrator   ~0007824

The crash reported by Steve is in the main thread.

Here is what happens in Thread 4 at the time of the crash:
Thread 4:
0 libsystem_c.dylib 0x00007fff8114cbc0 tiny_free_list_add_ptr + 306
1 libsystem_c.dylib 0x00007fff81156711 tiny_malloc_from_free_list + 1046
2 libsystem_c.dylib 0x00007fff8115700e szone_malloc_should_clear + 1115
3 libsystem_c.dylib 0x00007fff8118c3c8 malloc_zone_malloc + 77
4 libsystem_c.dylib 0x00007fff8118d1a4 malloc + 44
5 libstdc++.6.dylib 0x00007fff8716968e operator new(unsigned long) + 94
6 libstdc++.6.dylib 0x00007fff8715680a std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) + 126
7 libstdc++.6.dylib 0x00007fff871582fa char std::string::_S_construct<char const>(char const, char const, std::allocator<char> const&, std::forward_iterator_tag) + 78
8 libstdc++.6.dylib 0x00007fff87158412 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const, std::allocator<char> const&) + 64
9 libMRMLCore.dylib 0x000000010555942e vtkMRMLScene::GetNodeByID(char const
) + 62
10 libMRMLCore.dylib 0x0000000105599513 vtkMRMLTransformableNode::GetParentTransformNode() + 99
11 libMRMLDisplayableManager.dylib 0x0000000103083f60 vtkMRMLModelSliceDisplayableManager::vtkInternal::GetNodeMatrixToWorld(vtkMRMLTransformableNode, vtkMatrix4x4) + 80
12 libMRMLDisplayableManager.dylib 0x0000000103084a7c vtkMRMLModelSliceDisplayableManager::vtkInternal::UpdateDisplayableTransforms(vtkMRMLDisplayableNode) + 364
13 libMRMLDisplayableManager.dylib 0x0000000103084d38 vtkMRMLModelSliceDisplayableManager::ProcessMRMLNodesEvents(vtkObject
, unsigned long, void) + 360
14 libMRMLLogic.dylib 0x00000001030efa95 vtkMRMLAbstractLogic::MRMLNodesCallback(vtkObject
, unsigned long, void, void) + 85
15 libvtkCommon.5.10.dylib 0x000000010b0c68f1 vtkCallbackCommand::Execute(vtkObject, unsigned long, void) + 33
16 libMRMLCore.dylib 0x000000010548aba3 vtkEventBroker::InvokeObservation(vtkObservation, void) + 307
17 libMRMLCore.dylib 0x000000010548b11f vtkEventBroker::ProcessEvent(vtkObservation, vtkObject, unsigned long, void) + 767
18 libvtkCommon.5.10.dylib 0x000000010b0c68f1 vtkCallbackCommand::Execute(vtkObject
, unsigned long, void) + 33
19 libvtkCommon.5.10.dylib 0x000000010b0afbe7 vtkSubjectHelper::InvokeEvent(unsigned long, void
, vtkObject) + 1303
20 libMRMLCore.dylib 0x00000001054ec1c0 vtkMRMLModelNode::ProcessMRMLEvents(vtkObject
, unsigned long, void) + 176
21 libMRMLCore.dylib 0x000000010553e77c vtkMRMLNode::MRMLCallback(vtkObject
, unsigned long, void, void) + 108
22 libvtkCommon.5.10.dylib 0x000000010b0c68f1 vtkCallbackCommand::Execute(vtkObject, unsigned long, void) + 33
23 libMRMLCore.dylib 0x000000010548aba3 vtkEventBroker::InvokeObservation(vtkObservation, void) + 307
24 libMRMLCore.dylib 0x000000010548b11f vtkEventBroker::ProcessEvent(vtkObservation, vtkObject, unsigned long, void) + 767
25 libvtkCommon.5.10.dylib 0x000000010b0c68f1 vtkCallbackCommand::Execute(vtkObject
, unsigned long, void) + 33
26 libvtkCommon.5.10.dylib 0x000000010b0afbe7 vtkSubjectHelper::InvokeEvent(unsigned long, void
, vtkObject) + 1303
27 libMRMLLogic.dylib 0x0000000103110c81 vtkMRMLSliceLogic::ProcessLogicEvents() + 577
28 libvtkCommon.5.10.dylib 0x000000010b0c68f1 vtkCallbackCommand::Execute(vtkObject
, unsigned long, void) + 33
29 libMRMLCore.dylib 0x000000010548aba3 vtkEventBroker::InvokeObservation(vtkObservation
, void) + 307
30 libMRMLCore.dylib 0x000000010548b11f vtkEventBroker::ProcessEvent(vtkObservation
, vtkObject, unsigned long, void) + 767
31 libvtkCommon.5.10.dylib 0x000000010b0c68f1 vtkCallbackCommand::Execute(vtkObject, unsigned long, void) + 33
32 libvtkCommon.5.10.dylib 0x000000010b0afbe7 vtkSubjectHelper::InvokeEvent(unsigned long, void, vtkObject) + 1303
33 libMRMLLogic.dylib 0x00000001030ef880 vtkMRMLAbstractLogic::InvokePendingModifiedEvent() + 32
34 libMRMLLogic.dylib 0x00000001030efa95 vtkMRMLAbstractLogic::MRMLNodesCallback(vtkObject, unsigned long, void, void) + 85
35 libvtkCommon.5.10.dylib 0x000000010b0c68f1 vtkCallbackCommand::Execute(vtkObject
, unsigned long, void) + 33
36 libMRMLCore.dylib 0x000000010548aba3 vtkEventBroker::InvokeObservation(vtkObservation
, void) + 307
37 libMRMLCore.dylib 0x000000010548b11f vtkEventBroker::ProcessEvent(vtkObservation
, vtkObject, unsigned long, void) + 767
38 libvtkCommon.5.10.dylib 0x000000010b0c68f1 vtkCallbackCommand::Execute(vtkObject, unsigned long, void) + 33
39 libvtkCommon.5.10.dylib 0x000000010b0afbe7 vtkSubjectHelper::InvokeEvent(unsigned long, void, vtkObject) + 1303
40 libMRMLCore.dylib 0x00000001055494f6 vtkMRMLScalarVolumeDisplayNode::SetInputImageData(vtkImageData) + 102
41 libMRMLCore.dylib 0x00000001055af406 vtkMRMLVolumeNode::SetAndObserveImageData(vtkImageData
) + 150
42 libMRMLIDIO.dylib 0x000000010e7aba07 itk::MRMLIDImageIO::Write(void const*) + 807
43 libvtkITK.dylib 0x0000000107cd7a7c itk::ImageFileWriter<itk::Image<short, 3u> >::GenerateData() + 2396
44 libvtkITK.dylib 0x0000000107c8f405 itk::ImageFileWriter<itk::Image<short, 3u> >::Write() + 4341
45 libThresholdScalarVolumeLib.dylib 0x00000001220fa6f4 int (anonymous namespace)::DoIt<short>(int, char*, short) + 11508
46 libThresholdScalarVolumeLib.dylib 0x000000012210b8f8 ModuleEntryPoint + 14152
47 libqSlicerBaseQTCLI.dylib 0x00000001001dc2be vtkSlicerCLIModuleLogic::ApplyTask(void
) + 27182
48 libSlicerBaseLogic.dylib 0x0000000102fbbaaf vtkSlicerApplicationLogic::ProcessProcessingTasks() + 127
49 libSlicerBaseLogic.dylib 0x0000000102fbbc0f vtkSlicerApplicationLogic::ProcessingThreaderCallback(void*) + 31
50 libsystem_c.dylib 0x00007fff8113a8bf _pthread_start + 335
51 libsystem_c.dylib 0x00007fff8113db75 thread_start + 13

pieper

pieper

2013-02-06 04:43

administrator   ~0007825

Reminder sent to: millerjv

Jim -

Can you have a look at this and help us think through it?

On the hangout yesterday we realized that the MRMLImageIDIO is running in the task thread, but it ends up calling SetAndObserveImageData and the can modify the pipeline during a render depending on the timing. We could replicate this on windows and mac, on both debug and release builds by following the instructions in this bug report (click the Apply button repeatedly as fast as possible and it eventually happens).

-Steve

pieper

pieper

2013-02-06 04:43

administrator   ~0007826

In theory this should also have happened in slicer3, but I could not replicate it with several attempts on a mac release build.

pieper

pieper

2013-07-08 06:49

administrator   ~0008878

The problem is that the volume node now sends an ImageDataModified event in addition to a normal Modfied event:

https://github.com/Slicer/Slicer/blob/master/Libs/MRML/Core/vtkMRMLVolumeNode.cxx#L657

The MRMLIDImageIO (running in the thread) sets the image data for a node after disabling modified events, but this doesn't disable the new ImageDataModfied event:

https://github.com/Slicer/Slicer/blob/master/Libs/MRML/IDImageIO/itkMRMLIDImageIO.cxx#L587

finetjul

finetjul

2013-07-12 15:08

administrator   ~0009031

Last edited: 2013-07-12 15:09

Can you please review my suggested fix:
https://github.com/finetjul/Slicer/commits/2915-reschedule-cli-events

millerjv

millerjv

2013-07-12 16:51

developer   ~0009032

Just scanned this briefly. I probably would have disabled the ImageDataModified event instead.

But I like the idea of catching all events in the thread and then scheduling them in the main thread. Is this implementation general? Meaning any event can be caught and rescheduled in the main thread?

finetjul

finetjul

2013-07-12 19:49

administrator   ~0009033

Yes, it's (somewhat) generic: it catches (and reschedules) all the events fired by the "output" nodes.

finetjul

finetjul

2013-07-15 07:41

administrator   ~0009050

Fixed in r22196

jcfr

jcfr

2014-03-06 05:18

administrator   ~0011113

Closing resolved issues that have not been updated in more than 3 months

Related Changesets

Slicer: 2145-support-for-installing-extension-from-file d6cce6d1

2013-07-15 11:41:05

finetjul

Details Diff
BUG: Disable Apply button when CLI has a Completing status

If the user clicks frenetically on the Apply button, it was eventually
generating an assert in vtkSlicerCLIModuleLogic::ProcessMRMLLogicsEvents
because the button was clicked when the CLI was still "Completing".
Issue 0002915

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22194 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Base/QTCLI/qSlicerCLIModuleWidget.cxx Diff File

Slicer: 2145-support-for-installing-extension-from-file a3ef5585

2013-07-15 11:41:07

finetjul

Details Diff
ENH: Make vtkMRMLApplicationLogic::InvokeEventWithDelay thread-safe

If InvokeEventWithDelay was called from a different thread,
the AutoConnection in qSlicerCoreApplication was queuing the signal
therefore the InvokeRequest was deleted before the requestInvokeEvent()
slot was called.
Issue 0002915

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22195 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Base/QTCore/qSlicerCoreApplication.cxx Diff File
mod - Base/QTCore/qSlicerCoreApplication.h Diff File

Issue History

Date Modified Username Field Change
2013-02-05 09:34 pieper New Issue
2013-02-05 09:34 pieper Status new => assigned
2013-02-05 09:34 pieper Assigned To => finetjul
2013-02-05 09:39 pieper Note Added: 0007820
2013-02-05 09:41 pieper Note Added: 0007821
2013-02-05 10:18 finetjul Note Added: 0007822
2013-02-05 10:29 pieper Note Added: 0007823
2013-02-05 13:05 finetjul Note Added: 0007824
2013-02-06 04:43 pieper Note Added: 0007825
2013-02-06 04:43 pieper Note Added: 0007826
2013-07-08 06:49 pieper Note Added: 0008878
2013-07-12 15:08 finetjul Note Added: 0009031
2013-07-12 15:09 finetjul Note Edited: 0009031
2013-07-12 16:51 millerjv Note Added: 0009032
2013-07-12 19:49 finetjul Note Added: 0009033
2013-07-15 07:41 finetjul Note Added: 0009050
2013-07-15 07:41 finetjul Status assigned => resolved
2013-07-15 07:41 finetjul Fixed in Version => Slicer 4.3.0
2013-07-15 07:41 finetjul Resolution open => fixed
2013-07-18 06:18 pieper Relationship added related to 0002966
2014-03-06 05:18 jcfr Note Added: 0011113
2014-03-06 05:20 jcfr Status resolved => closed
2014-03-06 06:15 jcfr Target Version => Slicer 4.3.0
2017-06-07 23:27 finetjul Changeset attached => Slicer 2145-support-for-installing-extension-from-file a3ef5585
2017-06-07 23:27 finetjul Changeset attached => Slicer 2145-support-for-installing-extension-from-file d6cce6d1