bzip2 file consists of blocks, which allows decompression from arbitrary block.
We are successfully using this feature in our software with original bzip2 v.1.0.8 library.
But we are getting errors with IPP-patched version.
In the attachment you will find CMake project with 3 apps and test archives which demonstrate these problems.
It will build the apps twice: with IPP and without IPP.
*.info files show the start offset and size of bzip2 blocks.
problem1_ipp: For sizes > 2GB, BZ2_bzCompress with IPP fails - it returns BZ_DATA_ERROR.
problem2_ipp: If we try to decompress several consecutive BZip2 blocks (but not entire file) the calls to BZ2 functions succeed but return less data than should.
problem3_ipp: Demonstrates the same problem as in problem2 but combines decompressed parts so that it becomes more obvious that some bytes are missing.
problem3_noipp: Combined decompressed file (ut_test_data_created_with_ipp.csv.bz2_combined_split_on_offset_39541_without_ipp) is identical to the original uncompressed file (ut_test_data.csv).
Steps to reproduce:
# Modify the following paths in `bzip2_ipp_example/CMakeLists.txt`: IPPROOT BZIP2_ROOT_WITH_IPP BZIP2_ROOT_WITHOUT_IPP cd bzip2_ipp_example # Clean rm -rf build # Configure cmake -B build . # Build cmake --build build -j # Run build/problem1_noipp/problem1_noipp build/problem1_ipp/problem1_ipp build/problem2_noipp/problem2_noipp build/problem2_ipp/problem2_ipp build/problem3_noipp/problem3_noipp build/problem3_ipp/problem3_ipp
Thank you for your patience.
The issue raised by you has been fixed in the 2021.4 version. Please download and let us know if this resolves your issue.
Thanks for the confirmation.
As the issue is resolved we are closing this thread from our end.
If you need any additional information from Intel, please post a new question as this thread will no longer be monitored.
Have a Good Day!