On 2015-07-06 Ed Hanway <ehan...@ilm.com> wrote: > Mathieu Malaterre wrote on Sunday, July 05, 2015 [...] >> when the test suite runs, here is what I get (debian jessie x86/32bits): >> [...] >> Running testOptimizedInterleavePatterns >> Testing SSE optimisation with different interleave patterns (large images) [...] >> error reading back channel B pixel 96,-62 got -nan expected -nan >> lt-IlmImfTest: testOptimizedInterleavePatterns.cpp:238: bool >> {anonymous}::compare(const Imf_2_2::FrameBuffer&, const >> Imf_2_2::FrameBuffer&, const Box2i&, bool): Assertion >> `writtenHalf.bits()==readHalf.bits()' failed. >> /bin/bash: line 5: 25131 Aborted ${dir}$tst >> FAIL: IlmImfTest >> ================== >> 1 of 1 test failed >> ================== >> [...]
>> This is a hard-failure based on an assert(). Is there an actual >> issue in openexr 2.2.0 ? > It is noted in the comments for this issue: > https://github.com/openexr/openexr/issues/67 Per the latest comment > on the issue thread, the problem is in the test rather than in the > library itself. Sorry that it hasn't been addressed since the issue > was filed in 2013 -- it doesn't show up on the platforms we use > regularly build for, which are mainly 64-bit, or we would have > cleaned it up long ago. Hello, Pulling patch-IlmImfTest_testOptimizedInterleavePatterns.cpp from FreeBSD lets the testsuite succeed on linux/i386. @OpenEXR: FreeBSD is applying a couple of patches, it probably makes sense to review each of these. https://svnweb.freebsd.org/ports/head/graphics/OpenEXR/files/ extra-patch-IlmImfExamples__Makefile.in patch-exrenvmap__main.cpp patch-exrmaketiled__main.cpp patch-IlmImf_ImfFastHuf.cpp patch-IlmImf__ImfSystemSpecific.cpp patch-IlmImf__Makefile.in patch-IlmImfTest__main.cpp patch-IlmImfTest_testOptimizedInterleavePatterns.cpp patch-IlmImfUtil__Makefile.in patch-IlmImfUtilTest_main.cpp cu Andreas -- `What a good friend you are to him, Dr. Maturin. His other friends are so grateful to you.' `I sew his ears on from time to time, sure'
--- IlmImfTest/testOptimizedInterleavePatterns.cpp.orig 2014-08-10 02:03:49 UTC +++ IlmImfTest/testOptimizedInterleavePatterns.cpp @@ -226,7 +226,8 @@ bool compare(const FrameBuffer& asRead, writtenHalf=half(i.slice().fillValue); } - if (writtenHalf.bits()!=readHalf.bits()) + if (writtenHalf.bits()!=readHalf.bits() && + !(writtenHalf.isNan() && readHalf.isNan())) { if (nonfatal) { @@ -235,7 +236,8 @@ bool compare(const FrameBuffer& asRead, else { cout << "\n\nerror reading back channel " << i.name() << " pixel " << x << ',' << y << " got " << readHalf << " expected " << writtenHalf << endl; - assert(writtenHalf.bits()==readHalf.bits()); + assert(writtenHalf.bits()==readHalf.bits() || + (writtenHalf.isNan() && readHalf.isNan())); exit(1); } }