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);
                     }
                 }             

Reply via email to