alexcrichton / xz2-rs

Bindings to liblzma in Rust (xz streams in Rust)
Apache License 2.0
81 stars 52 forks source link

Behavior difference between `static` and not #105

Open wcampbell0x2a opened 1 year ago

wcampbell0x2a commented 1 year ago

I'm currently using this library for my squashfs library and i'm trying to let the user build this library statically: https://github.com/wcampbell0x2a/backhand/compare/master...add-xz-gzip-features

This library works great when building without the static features. However, when using this features the library gives different results breaking my tests and library when decompressing.

The first is an example of the beginning of the buffers being sent into the library:

extracting data @ offset 6a
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, ea, fe, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, 9d, 83, 03, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, d4, 84, 03, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, d2, a4, 03, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, 9b, d9, 03, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, e7, 9e, 03, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 04, c1, cd, ff, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, e1, 98, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, b8, 9b, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, ee, 9b, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, e4, be, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, 87, 88, 02, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, ac, aa, 02, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, 86, fd, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, b0, a2, 02, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, c6, fc, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, f2, 94, 02, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, d4, f8, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, e1, b6, 02, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, c8, 82, 03, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, 84, b7, 02, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, a2, 98, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, f6, 6d, 80, 80, 08, 21]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, 97, ad, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, 83, a2, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, bf, b5, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, c6, 8e, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, b1, d7, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, fe, bb, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, f6, 91, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, 8e, 7b, 80, 80, 08, 21]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, 85, 35, 80, 80, 08, 21]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, a5, 1a, 80, 80, 08, 21]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, dc, 37, 80, 80, 08, 21]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, d1, 25, 80, 80, 08, 21]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, f3, e0, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, a4, c4, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, d3, 29, 90, 81, 01, 21]
after
data bytes: 4a4090
extracting data @ offset 6a
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, ea, fe, 01, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, 9d, 83, 03, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, d4, 84, 03, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, d2, a4, 03, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, 9b, d9, 03, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 03, c0, e7, 9e, 03, 80, 80, 08]
after
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 04, c1, cd, ff, 01, 80, 80, 08]
thread 'test_08' panicked at 'called `Result::unwrap()` on an `Err` value: StdIo(Custom { kind: InvalidInput, error: Options })', tests/test.rs:35:75
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

I remind you, both examples are extracting the same file. All I see is that the following byte is different:

                                                                                           \/
before [fd, 37, 7a, 58, 5a, 00, 00, 01, 69, 22, de, 36, 04, c1, cd, ff, 01, 80, 80, 08]

Any help would be appreciated.