Source: orthanc
Version: 1.12.1+dfsg-1
Severity: important
Tags: upstream

The orthanc test suite fails after the build on s390x:

        ./OrthancFramework/UnitTestsSources/ImageTests.cpp:124: Failure
        Expected equality of these values:
          "1cca552b6bd152b6fdab35c4a9f02c2a"
          md5
            Which is: "92186150927d2f2c883ea72155597056"
        [  FAILED  ] PngWriter.Color16Pattern (4 ms)
        […]
        [----------] Global test environment tear-down
        [==========] 270 tests from 63 test suites ran. (2030 ms total)
        [  PASSED  ] 269 tests.
        [  FAILED  ] 1 test, listed below:
        [  FAILED  ] PngWriter.Color16Pattern
        
         1 FAILED TEST

This test is currently skipped in version 1.12.1+dfsg-2, but I
proceeded pretty bluntly, so at least the skip should be big
endian specific, or better the root cause should be fixed.

From my current investigations, the resulting png image from the
PngWriter.Color16Pattern shows two problems:

 1. it can't be opened by image viewers, but it is indeed
    recognized as a PNG by file(1) and examining it with an
    hexadecimal editor doesn't raise any obvious issues (apart
    that they are different);

 2. analyzing the images pixel per pixel using sng(1) highlights
    the image itself is byte swapped compared to the image
    produced on little endian system; this is very visible when
    using side by side comparison on the sng files:

        $ diff --side-by-side --width=80 Color16Pattern_amd64.sng 
Color16Pattern_s390x.sng | head -n20
        #SNG: from Color16Pattern_amd64.png   | #SNG: from 
Color16Pattern_s390x.png
        IHDR {                                  IHDR {
            width: 17; height: 61; bitdepth:        width: 17; height: 61; 
bitdepth: 
            using color alpha;                      using color alpha;
        }                                       }
        IMAGE {                                 IMAGE {
            pixels hex                              pixels hex
        00ff000000000000 00ff000000000000 00f <
        ff00000000000000 ff00000000000000 ff0   ff00000000000000 
ff00000000000000 ff0
        000000ff00000000 000000ff00000000 000 | 00ff000000000000 
00ff000000000000 00f
        0000ff0000000000 0000ff0000000000 000   0000ff0000000000 
0000ff0000000000 000
        0000000000ff0000 0000000000ff0000 000 | 000000ff00000000 
000000ff00000000 000
        00000000ff000000 00000000ff000000 000   00000000ff000000 
00000000ff000000 000
        00000000000000ff 00000000000000ff 000 | 0000000000ff0000 
0000000000ff0000 000
        000000000000ff00 000000000000ff00 000   000000000000ff00 
000000000000ff00 000
        00ff000000000000 00ff000000000000 00f | 00000000000000ff 
00000000000000ff 000
        ff00000000000000 ff00000000000000 ff0   ff00000000000000 
ff00000000000000 ff0
        000000ff00000000 000000ff00000000 000 | 00ff000000000000 
00ff000000000000 00f
        0000ff0000000000 0000ff0000000000 000   0000ff0000000000 
0000ff0000000000 000
        0000000000ff0000 0000000000ff0000 000 | 000000ff00000000 
000000ff00000000 000

(Thanks diffoscope(1) for introducing me to the use of sng by
the way!)

With some luck, the mitigation may be as simple as applying a
swab(3) on the pixel array produced by the test, but that still
wouldn't explain why the image was completely unreadable by
image readers (it may or may not work, I still have to check).
It is also possible my approach is wrong and the problem
genuinly lies in the png converter in Orthanc.

The bug should at least remain open until the test item is back
for little endian architectures.

-- System Information:
Debian Release: trixie/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.3.0-2-amd64 (SMP w/12 CPU threads; PREEMPT)
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

-- 
  .''`.  Étienne Mollier <emoll...@debian.org>
 : :' :  gpg: 8f91 b227 c7d6 f2b1 948c  8236 793c f67e 8f0d 11da
 `. `'   sent from /dev/pts/8, please excuse my verbosity
   `-    on air: Erik Norlander - Surreal (Feat. Lana Lane)

Attachment: signature.asc
Description: PGP signature

Reply via email to