InsightSoftwareConsortium / ITK

Insight Toolkit (ITK) -- Official Repository. ITK builds on a proven, spatially-oriented architecture for processing, segmentation, and registration of scientific images in two, three, or more dimensions.
https://itk.org
Apache License 2.0
1.47k stars 686 forks source link

`DeformableRegistration8Test3` seems broken (requires `ITK_USE_BRAINWEB_DATA`) #5170

Open seanm opened 3 weeks ago

seanm commented 3 weeks ago

I suspect ITK_USE_BRAINWEB_DATA does not get a lot of testing...

If I enable that option, build, then do ctest -V -R DeformableRegistration8Test3, I get a failure like:

Starting Registration
ExceptionObject caught !

itk::ImageFileReaderException (0x60f000002280)
Location: "virtual void itk::ImageFileReader<itk::Image<float, 3>>::GenerateOutputInformation() [TOutputImage = itk::Image<float, 3>, ConvertPixelTraits = itk::DefaultConvertPixelTraits<float>]"
File: /Users/sean/external/ITK/Modules/IO/ImageBase/include/itkImageFileReader.hxx
Line: 135
Description:  Could not create IO object for reading file /Users/sean/external/ITK-ASan-bin/Testing/Temporary/BSplineWarping2Test.mhd
The file doesn't exist.
Filename = /Users/sean/external/ITK-ASan-bin/Testing/Temporary/BSplineWarping2Test.mhd

Indeed that file is not there. If I then do ctest -j22 -R ., that seems to tickle something else to get/create the file. Now if I run just DeformableRegistration8Test3 it finds that file, and I get farther.

It runs for minutes and consumes tonnes of RAM. I have 192 GiB of physical RAM and it uses it all and starts swapping.

If I then enable UBSan I find a use of a null pointer. I chased it a bit and if you take this virtualImage:

https://github.com/InsightSoftwareConsortium/ITK/blob/1090d31e0360022b4414d0c3cbf27927a7d55901/Modules/Registration/Metricsv4/include/itkImageToImageMetricv4GetValueAndDerivativeThreader.hxx#L32

and add the line after assert(virtualImage->GetBufferPointer()); that's the null, which I believe is unexpected.

dzenanz commented 3 weeks ago

Some test interdependency probably needs to be defined. Indeed, ITK_USE_BRAINWEB_DATA does not get a lot of testing. We could change that by turning it on in one of the nightly build configurations?

seanm commented 3 weeks ago

It's enabled on some of my nightly builds, like here: https://open.cdash.org/viewTest.php?onlyfailed&buildid=10165388

I was trying in yesterday's hackathon to green them up. :)

seanm commented 2 weeks ago

So since this has been set to 'backlog', I guess no one is going to work on it any time soon?

If so, I'll get rid of ITK_USE_BRAINWEB_DATA on my nightly cdash submissions... (which I'd really like to get green)

dzenanz commented 2 weeks ago

I expect that no one will work on it any time soon. You are quite welcome to invalidate that expectation by working on it 😄

seanm commented 2 weeks ago

I expect that no one will work on it any time soon. You are quite welcome to invalidate that expectation by working on it 😄

Alas, I can't spend all my time on ITK. :)

I'll remove ITK_USE_BRAINWEB_DATA from my builds then.