The problem is worse than I thought.

CompositeTransform::GetFixedParameters() dynamically resizes the 
FixedParameters array, and then does a bunch of std::copy to copy fixed 
parameters out of its list of sub-transforms.

The only way to make that thread safe is to use a Mutex lock to guard where it 
changes the member variable.

From: <Williams>, Mushly McMushmaster 
<[email protected]<mailto:[email protected]>>
Date: Friday, October 24, 2014 at 11:45 AM
To: ITK <[email protected]<mailto:[email protected]>>
Subject: [ITK-dev] MatrixOffsetTransformBase::GetFixedParameters not ThreadSafe 
-- regression test?

I was going to address this bug that I just logged:

https://issues.itk.org/jira/browse/ITK-3324

Basically, if GetFixedParameters is called from multiple threads, it introduces 
a race to resize the internal fixed parameter array.

This was never  a problem before Hans Johnson’s recent patch to propagate fixed 
parameters int Transform::GetInverse() methods.  He added:

inverse->SetFixedParameters(this->GetFixedParameters());

which makes perfect sense.

I have a decent idea of how to make this better:  Set the fixed parameters’ 
size in the constructor for MatrixOffsetTransformBase, and set the fixed 
parameters in SetCenter.  I will review the other instances of 
GetFixedParameters and GetParameters to see if they’re similarly thread-unsafe.

But how do you write a regression test for this?




________________________________
Notice: This UI Health Care e-mail (including attachments) is covered by the 
Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential and 
may be legally privileged.  If you are not the intended recipient, you are 
hereby notified that any retention, dissemination, distribution, or copying of 
this communication is strictly prohibited.  Please reply to the sender that you 
have received the message in error, then delete it.  Thank you.
________________________________


________________________________
Notice: This UI Health Care e-mail (including attachments) is covered by the 
Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential and 
may be legally privileged.  If you are not the intended recipient, you are 
hereby notified that any retention, dissemination, distribution, or copying of 
this communication is strictly prohibited.  Please reply to the sender that you 
have received the message in error, then delete it.  Thank you.
________________________________
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-developers

Reply via email to