[Insight-developers] itkTimeStamp Test Failures Mistery
Bradley Lowekamp
blowekamp at mail.nih.gov
Mon Feb 16 16:46:34 EST 2009
Doesn't this test some times fail on windows too?
http://www.cdash.org/CDash/testSummary.php?project=2&name=itkTimeStampTest&date=2009-02-15
Could there be an off-by-one error related to the max number of
threads? I wonder if we'd get errors if we used one less then max
threads?
Brad
On Feb 16, 2009, at 2:29 PM, Luis Ibanez wrote:
>
> The TimeStamp test continues to mysteriously fail in several
> platforms, apparently at random occasions.
>
> mini3.nlm MacOSX-gcc4.0-rel Failed 17.00
> gingee Linux-c++ Failed 6.16
> mini3.nlm MacOSX-gcc4.0-rel Failed 18.00
> zion.kitware Linux-g++-4.1 Failed 10.34
> BillsBasement Linux-gcc43-release Failed 16.24
> crl.med.harvard.edu Linux-x86_64-release-gcc Failed 5.58
> mini1.nlm MacOSX-Xcode3.0-dbg Failed 17.00
> murron.hobbs-hancock Linux-gcc-4.3.2-x86_64 Failed 149.23
> mini2.nlm MacOSX-Xcode3.0-dbg Failed 17.00
> Eternia.kitware gcc_review_optreg_libxml2 Failed 6.46
> mini3.nlm MacOSX-gcc4.0-rel Failed 18.00
>
> So here is the mystery:
>
> The structure of the test is that it creates one TimeStamp
> instance.
>
> It sets up a function to be called from a large number of
> threads (128 in some platforms). Each call to the function,
> triggers an update in the TimeStamp instance.
>
> Therefore the expectation of the test is that after the
> call to SingleExecuteMethod() the Modified time of the
> TimeStamp will have increased by (at least) the number
> of threads.
>
> The increase may be larger than the number of threads
> if any other ITK class happens to have an instance of
> the TimeStamp updated in between...
>
> The test assumes that if the difference between the modified
> time before and after the call to
>
> multithreader->SingleMethodExecute();
>
> if less than the number of threads, then the TimeStamp
> failed to increment its counter in between the round
> of threaded executions.
>
> The platforms above report such occurrences.
>
> However,
> The test also has two arrays with a number of elements
> equal to the number of threads, and in them we verify
> that the threaded function has indeed been called for
> each one of the threads.
>
> When the test fails, we still observe that such counters
> are incremented correctly.
>
> The failure cases are behaving "as if" a number of the
> increments to the time stamp where "delayed" to be
> executed after the call to SingleMethodExecute().
>
> It looks as if the threads were interrupted in the
> middle of their execution and then allowed to continue.
>
> Particularly because, when the test fail, by reporting
> a default in the TimeStamp increment, the next iteration
> report and excess by the same amount. E.g. as if the
> TimeStamp were catching up the missing increments in
> the next iteration of the test.
>
>
> Any suggestions, hints, advice will be appreciated,
>
>
> Thanks
>
>
> Luis
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> 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://www.itk.org/mailman/listinfo/insight-developers
More information about the Insight-developers
mailing list