|
From: | Fisher, Charles J. (Top Echelon) |
Subject: | [Lzip-bug] lzip segv 32-bit |
Date: | Mon, 14 Nov 2016 19:07:15 +0000 |
Why is this crashing? I’m on Oracle’s reroll of RedHat 5, 32-bit PAE kernel. My userspace in 32-bit Linux is supposed to be 3 gigabytes. This is not enough room? $ g++ -Wall -W -O3 -g -o lzip arg_parser.cc encoder_base.cc encoder.cc fast_encoder.cc decoder.cc -DPROGVERSION=\"1.18\" -D_FORTIFY_SOURCE=2 main.cc fast_encoder.cc: In member function ‘virtual bool FLZ_encoder::encode_member(long long unsigned int)’: fast_encoder.cc:106: warning: ‘match_distance’ may be used
uninitialized in this function $ mv lzip /tmp $ su - # mv /tmp/lzip /bin # chown root:root /bin/lzip # gdb lzip GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-45.0.1.el5) Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /bin/lzip...done. (gdb) run -k -9 --dictionary-size 512M --match-length 273 undo01.dat Starting program: /bin/lzip -k -9 --dictionary-size 512M --match-length 273 undo01.dat Program received signal SIGSEGV, Segmentation fault. LZ_encoder::get_match_pairs (this=0xb7f9b008, pairs=0x0) at encoder.cc:51 51 unsigned tmp = crc32[data[0]] ^ data[1]; (gdb) bt #0 LZ_encoder::get_match_pairs (this=0xb7f9b008, pairs=0x0) at encoder.cc:51 #1 0x0804ec5c in move_and_update (this=0xb7f9b008, reps=0xbfffe6b8, state=...) at encoder.h:223 #2 LZ_encoder::sequence_optimizer (this=0xb7f9b008, reps=0xbfffe6b8, state=...) at encoder.cc:202 #3 0x08050f24 in LZ_encoder::encode_member (this=0xb7f9b008, member_size=2251799813685248) at encoder.cc:534 #4 0x0805c666 in (anonymous namespace)::compress (member_size=2251799813685248, volume_size=0, infd=7, encoder_options=..., pp=..., in_statsp=0xbfffe878, zero=false) at main.cc:451 #5 0x0805e94a in main (argc=Cannot access memory at address 0x202 ) at main.cc:874 (gdb) # lzip -k -9 --dictionary-size 253M --match-length 273 undo01.dat undo01.dat: Not enough memory. Try a smaller dictionary size. lzip: Deleting output file 'undo01.dat.lz', if it exists. # lzip -k -9 --dictionary-size 252M --match-length 273 undo01.dat undo01.dat: Not enough memory. Try a smaller dictionary size. lzip: Deleting output file 'undo01.dat.lz', if it exists. # lzip -k -9 --dictionary-size 251M --match-length 273 undo01.dat (runs) |
[Prev in Thread] | Current Thread | [Next in Thread] |