Skip to content

"Failed to read attribute" error message on Big Endian platform? #189

@s-trinh

Description

@s-trinh

Describe the issue

   Error: Unable to parse EXR header from /root/visp-images/memorial/
  memorial_color_32bits.exr : Failed to read attribute.

when testing to read an EXR file on a Build on ubuntu20.04 s390x (Big Endian) platform.

To Reproduce
Steps to reproduce the behavior:

  1. Compile TinyEXR with:
General configuration information for ViSP 3.5.1

  Version control:               unknown

  Platform:
    Timestamp:                   2023-03-11T17:14:14Z
    Host:                        Linux 5.15.0-1034-azure s390x
    CMake:                       3.16.3
    CMake generator:             Unix Makefiles
    CMake build tool:            /usr/bin/make
    Configuration:               Release

  System information:
    Number of CPU logical cores: 2
    Number of CPU physical cores: 2
    Total physical memory (in MiB): 6943
    OS name:                     Linux
    OS release:                  5.15.0-1034-azure
    OS version:                  #41~20.04.1-Ubuntu SMP Sat Feb 11 17:02:42 UTC 2023
    OS platform:                 s390x
    CPU name:                    Unknown P6 family
    Is the CPU 64-bit?           yes
    Does the CPU have FPU?       yes
    CPU optimization:

  C/C++:
    Built as dynamic libs?:      yes
    C++ Compiler:                /usr/bin/c++  (ver 9.4.0)
    C++ flags (Release):         -Wall -Wextra -fopenmp -std=c++17 -fvisibility=hidden -fPIC -O3 -DNDEBUG
    C++ flags (Debug):           -Wall -Wextra -fopenmp -std=c++17 -fvisibility=hidden -fPIC -g
    C Compiler:                  /usr/bin/cc
    C flags (Release):           -Wall -Wextra -fopenmp -std=c++17 -fvisibility=hidden -fPIC -O3 -DNDEBUG
    C flags (Debug):             -Wall -Wextra -fopenmp -std=c++17 -fvisibility=hidden -fPIC -g
    Linker flags (Release):
    Linker flags (Debug):
    Use cxx standard:            17

Version at: 3c8e0cb
2. Load EXR Image memorial_color_32bits.exr
3. See error:

EXR image read
Color
32-bits

/home/runner/work/visp/visp/modules/core/test/image-with-dataset/testIoEXR.cpp:88
...............................................................................

/home/runner/work/visp/visp/modules/core/test/image-with-dataset/testIoEXR.cpp:88: FAILED:
{Unknown expression after the reported line}
due to unexpected exception with message:
Error: Unable to parse EXR header from /root/visp-images/memorial/
memorial_color_32bits.exr : Failed to read attribute.


I suspect an issue with endianness since it occurs specifically on this platform: Build on ubuntu20.04 s390x (Big Endian).

Otherwise, did I miss checking something when reading the EXR file?
This is the code used.

Many thanks.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions