zlib 解压缩无效距离集
zlib decompression invalid distances set
./minigzip: my_file_name.gz: 无效的距离设置
从 https://github.com/madler/zlib 下载代码,并使用以下命令对不同版本的 zlib 进行测试:
git reset --hard && git clean -df && git checkout vxxx && ./configure && make && make test && ./minigzip -d my_file_name.gz
原来v1.2.3.4 ~ v1.2.7会报这个“invalid distances set”的错误,v1.2.3.3及以下,v1.2.7.1及以下版本解压文件就好了。
这个问题是从我们的hadoop集群中提取出来的。我们有一个工作来编写 gzip 文件,然后有一个工作来使用它。消费作业中的数千个文件,随机其中一个会抛出此错误。我们正在使用 zlib 原生库 v1.2.7。
但是当对该文件使用gzip(gunzip)commnad工具时,可以正常解压。因此上面的不同版本的 zlib 测试。
这只是损坏的数据还是我应该升级 zlib 版本?
经过 Adler 的确认,zlib v1.2.7.1 的解压器端确实修复了一个错误。
为了重现这个问题,我用最新版本的zlib解压了.gz文件,然后用v1.2.7压缩了解压后的文件,得到了完全相同大小的压缩文件:
~/workdir$ ll
-rw------- 1 xxx xxx 232917709 Mar 15 13:54 my_file_name.gz
~/zlib/$ git reset --hard && git clean -df && git checkout v1.2.11 && ./configure && make && ./minigzip -d ../workdir/my_file_name.gz
~/workdir$ ll
-rw-rw-r-- 1 xxx xxx 705650679 Mar 15 13:59 my_file_name
~/zlib/$ git reset --hard && git clean -df && git checkout v1.2.7 && ./configure && make && ./minigzip ../workdir/my_file_name
~/workdir$ ll
-rw-rw-r-- 1 xxx xxx 232917709 Mar 15 14:02 my_file_name.gz
之后用v1.2.7解压会报同样的错误:
~/zlib/$ ./minigzip -d ../workdir/my_file_name.gz
./minigzip: ../workdir/my_file_name.gz: invalid distances set
也就是说这不是数据损坏。
注意:部分输出已编辑。
./minigzip: my_file_name.gz: 无效的距离设置
从 https://github.com/madler/zlib 下载代码,并使用以下命令对不同版本的 zlib 进行测试:
git reset --hard && git clean -df && git checkout vxxx && ./configure && make && make test && ./minigzip -d my_file_name.gz
原来v1.2.3.4 ~ v1.2.7会报这个“invalid distances set”的错误,v1.2.3.3及以下,v1.2.7.1及以下版本解压文件就好了。
这个问题是从我们的hadoop集群中提取出来的。我们有一个工作来编写 gzip 文件,然后有一个工作来使用它。消费作业中的数千个文件,随机其中一个会抛出此错误。我们正在使用 zlib 原生库 v1.2.7。
但是当对该文件使用gzip(gunzip)commnad工具时,可以正常解压。因此上面的不同版本的 zlib 测试。
这只是损坏的数据还是我应该升级 zlib 版本?
经过 Adler 的确认,zlib v1.2.7.1 的解压器端确实修复了一个错误。
为了重现这个问题,我用最新版本的zlib解压了.gz文件,然后用v1.2.7压缩了解压后的文件,得到了完全相同大小的压缩文件:
~/workdir$ ll
-rw------- 1 xxx xxx 232917709 Mar 15 13:54 my_file_name.gz
~/zlib/$ git reset --hard && git clean -df && git checkout v1.2.11 && ./configure && make && ./minigzip -d ../workdir/my_file_name.gz
~/workdir$ ll
-rw-rw-r-- 1 xxx xxx 705650679 Mar 15 13:59 my_file_name
~/zlib/$ git reset --hard && git clean -df && git checkout v1.2.7 && ./configure && make && ./minigzip ../workdir/my_file_name
~/workdir$ ll
-rw-rw-r-- 1 xxx xxx 232917709 Mar 15 14:02 my_file_name.gz
之后用v1.2.7解压会报同样的错误:
~/zlib/$ ./minigzip -d ../workdir/my_file_name.gz
./minigzip: ../workdir/my_file_name.gz: invalid distances set
也就是说这不是数据损坏。
注意:部分输出已编辑。