Skip to content

spng incompatible with libpng 1.6.47 (PNGv3) #276

@Tachi107

Description

@Tachi107

Describe the bug

Hi, libpng 1.6.47, in commit a8242dd9473a8da4d851623cf0b514a8ee4bee34, introduced a change which changed its behaviour in accordance with the new PNG 3 standard.

As a result, spng's test suite broke, as the behaviour of the two libraries now differ. In particular, tests ch1n3p04 and ch2n3p08 broke.

To Reproduce

Build spng and run its tests against libpng 1.6.47 (or any version which includes commit a8242dd9473a8da4d851623cf0b514a8ee4bee34)

Additional context

Full logs:

=================================== 50/209 ===================================
test:         spng / ch1n3p04
start time:   14:18:59
duration:     0.04s
result:       exit status 1
command:      ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MESON_TEST_ITERATION=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=196 LD_LIBRARY_PATH=/home/tachi/dev/deb/libspng/build/subprojects/libpng:/home/tachi/dev/deb/libspng/build/ /home/tachi/dev/deb/libspng/build/tests/testsuite /home/tachi/dev/deb/libspng/build/../tests/images/ch1n3p04.png
----------------------------------- stdout -----------------------------------
INDEXED 4-bit, 32x32 non-interlaced
17 test cases (skipping 5)
Decode and compare PNG,    FLAGS: COMPARE_CHUNKS 
[before IDAT] spng chunks:   PLTE gAMA sBIT hIST
[before IDAT] libpng chunks: PLTE gAMA sBIT
[before IDAT] ERROR: metadata mismatch!
[ after IDAT] spng chunks:   PLTE gAMA sBIT hIST
[ after IDAT] libpng chunks: PLTE gAMA sBIT
[ after IDAT] ERROR: metadata mismatch!
Encode and compare PNG,    FLAGS: 
           compare (reencoded, original)...
[before IDAT] spng chunks:   PLTE gAMA sBIT hIST
[before IDAT] libpng chunks: PLTE gAMA sBIT
[before IDAT] ERROR: metadata mismatch!
[ after IDAT] spng chunks:   PLTE gAMA sBIT hIST
[ after IDAT] libpng chunks: PLTE gAMA sBIT
[ after IDAT] ERROR: metadata mismatch!
compare error (1))
file dumped to dump.png
Encode and compare RAW,    FLAGS: 
           compare (reencoded, original)...
[before IDAT] spng chunks:   PLTE gAMA sBIT hIST
[before IDAT] libpng chunks: PLTE gAMA sBIT
[before IDAT] ERROR: metadata mismatch!
[ after IDAT] spng chunks:   PLTE gAMA sBIT hIST
[ after IDAT] libpng chunks: PLTE gAMA sBIT
[ after IDAT] ERROR: metadata mismatch!
compare error (1))
file dumped to dump.png
Decode and compare RAW,    FLAGS: (NONE)
Decode and compare RGBA8,  FLAGS: TRNS 
Decode and compare RGBA8,  FLAGS: TRNS GAMMA 
Decode and compare RGBA16, FLAGS: TRNS 
Decode and compare RGBA16, FLAGS: TRNS GAMMA 
Decode and compare RGB8,   FLAGS: (NONE)
Decode and compare RGB8,   FLAGS: GAMMA 
Decode and compare G8,     FLAGS: [SKIPPED]
Decode and compare GA8,    FLAGS: [SKIPPED]
Decode and compare GA8,    FLAGS: TRNS [SKIPPED]
Decode and compare GA16,   FLAGS: [SKIPPED]
Decode and compare GA16,   FLAGS: TRNS [SKIPPED]
Decode and compare VIPS,   FLAGS: TRNS 
VIPS format: RGB8
Decode and compare PNG,    FLAGS: EXTENDED 
----------------------------------- stderr -----------------------------------
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
==============================================================================

=================================== 51/209 ===================================
test:         spng / ch2n3p08
start time:   14:18:59
duration:     0.04s
result:       exit status 1
command:      MALLOC_PERTURB_=140 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MESON_TEST_ITERATION=1 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LD_LIBRARY_PATH=/home/tachi/dev/deb/libspng/build/subprojects/libpng:/home/tachi/dev/deb/libspng/build/ /home/tachi/dev/deb/libspng/build/tests/testsuite /home/tachi/dev/deb/libspng/build/../tests/images/ch2n3p08.png
----------------------------------- stdout -----------------------------------
INDEXED 8-bit, 32x32 non-interlaced
17 test cases (skipping 5)
Decode and compare PNG,    FLAGS: COMPARE_CHUNKS 
[before IDAT] spng chunks:   PLTE gAMA hIST
[before IDAT] libpng chunks: PLTE gAMA
[before IDAT] ERROR: metadata mismatch!
[ after IDAT] spng chunks:   PLTE gAMA hIST
[ after IDAT] libpng chunks: PLTE gAMA
[ after IDAT] ERROR: metadata mismatch!
Encode and compare PNG,    FLAGS: 
           compare (reencoded, original)...
[before IDAT] spng chunks:   PLTE gAMA hIST
[before IDAT] libpng chunks: PLTE gAMA
[before IDAT] ERROR: metadata mismatch!
[ after IDAT] spng chunks:   PLTE gAMA hIST
[ after IDAT] libpng chunks: PLTE gAMA
[ after IDAT] ERROR: metadata mismatch!
compare error (1))
file dumped to dump.png
Encode and compare RAW,    FLAGS: 
           compare (reencoded, original)...
[before IDAT] spng chunks:   PLTE gAMA hIST
[before IDAT] libpng chunks: PLTE gAMA
[before IDAT] ERROR: metadata mismatch!
[ after IDAT] spng chunks:   PLTE gAMA hIST
[ after IDAT] libpng chunks: PLTE gAMA
[ after IDAT] ERROR: metadata mismatch!
compare error (1))
file dumped to dump.png
Decode and compare RAW,    FLAGS: (NONE)
Decode and compare RGBA8,  FLAGS: TRNS 
Decode and compare RGBA8,  FLAGS: TRNS GAMMA 
Decode and compare RGBA16, FLAGS: TRNS 
Decode and compare RGBA16, FLAGS: TRNS GAMMA 
Decode and compare RGB8,   FLAGS: (NONE)
Decode and compare RGB8,   FLAGS: GAMMA 
Decode and compare G8,     FLAGS: [SKIPPED]
Decode and compare GA8,    FLAGS: [SKIPPED]
Decode and compare GA8,    FLAGS: TRNS [SKIPPED]
Decode and compare GA16,   FLAGS: [SKIPPED]
Decode and compare GA16,   FLAGS: TRNS [SKIPPED]
Decode and compare VIPS,   FLAGS: TRNS 
VIPS format: RGB8
Decode and compare PNG,    FLAGS: EXTENDED 
----------------------------------- stderr -----------------------------------
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
libpng warning: hIST: out of place
==============================================================================

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions