Hi Matt, You are right, the troublesome member variable can be removed entirely, making your solution the correct fix. Thank you.
Best regards, Yves On Tue, Aug 26, 2014 at 5:31 AM, Matt McCormick <[email protected]> wrote: > Hi Yves, > > Yes, your comments are very welcome. Thank you for discussing this > issue with the list! > > Regarding the issue described and the patch, I think it is a good > start. As you not, the smart pointers are not very effective from an > efficiency perspect, and it would be fine to replace them by raw > pointer since there is no issue with ownership or life time > management. However, the thread-safety is still an issue. Digging > into the code, it looks like the m_Selectors member in > PCAShapeSignedDistanceFunction can be removed altogether. Please > review this patch: > > http://review.source.kitware.com/#/c/16824/ > > Thanks, > Matt > > On Mon, Aug 18, 2014 at 10:30 AM, Yves Frederix > <[email protected]> wrote: >> Hi all, >> >> I am writing you with a crash I encountered while experimenting with >> the GeodesicActiveContour image filter with shape guidance. Although >> I did not find the root cause of the problem, I did implement a small >> change which might be a useful contribution. >> >> Currently, the GeodesicActiveContourShapePriorLevelSetImageFilter is >> based on a SparseField solver. For my application, this was not very >> suitable and I implemented a version of this image filter based on a >> dense solver. After doing this, however, I consistently experienced a >> crash in the algorithm when more than one thread was used. After some >> debugging, I tracked down the problem to >> itkPCAShapeSignedDistanceFunction, which contains a smart pointer >> member variable which caused the crash in the multithreaded run. In >> particular, it seemed to me that the reference counting somehow got >> confused, and things went wrong. >> I did not feel comfortable enough to dig deeper into the root cause of >> the problem, but I did do a simple fix to the >> itkPCAShapeSignedDistanceFunction code that avoids the problem, which >> I would like to share (see attach). Basically, I replaced the >> problematic reference counting member variable by a raw pointer, so >> that during iteration no reference counting takes place. In this >> particular case, I think that this change does not impose any risks as >> there is no issue with ownership or life time management. >> >> I am unsure if this mailing list is the best or correct medium to >> report this, so if not, please point me to the right direction. If >> somebody would be interested in looking at the root cause of this >> issue, I should be able to provide some code to reproduce the crash. >> Just let me know. >> >> Best regards, >> Yves >> >> _______________________________________________ >> 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 >> >> _______________________________________________ >> Community mailing list >> [email protected] >> http://public.kitware.com/mailman/listinfo/community >> _______________________________________________ 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
