Subject: bug#23133: closed (Re: bug#23133: gzip-1.7: Segmentation Fault with solarisstudio12.4 on Solaris10 x64)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 28 Mar 2016 23:37:01 +0000

Your bug report

#23133: gzip-1.7: Segmentation Fault with solarisstudio12.4 on Solaris10 x64

which was filed against the gzip package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
23133: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23133
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#23133: gzip-1.7: Segmentation Fault with solarisstudio12.4 on Solaris10 x64
From: Paul Eggert <[email-masked]>
To: Kiyoshi KANAZAWA <[email-masked]>
Cc: [email-masked]
Date: Mon, 28 Mar 2016 16:35:52 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

On 03/28/2016 02:46 AM, Kiyoshi KANAZAWA wrote:
> I tried to build gzip-1.7 with solarisstudio12.4 cc, on Solaris10 x64,
>
> and had 'Segmentation Fault' in make check.
>
> % ./configure CC=cc CFLAGS='-m64 -g'

Thanks for reporting that. This exposed some bugs in configure.ac and 
lib/match.c: the configuration procedure assumes that, since cc 
assembles x86 instructions successfully, the x86 code will actually work 
when called from x86-64 code. I fixed this by installing the attached patch.

Also, since -m64 affects the preprocessor output, you need to set 
CPPFLAGS and/or put the -m64 into CC instead.  Something like the 
following should work with gzip 1.7:

./configure CC='cc -m64' CFLAGS='-g' DEFS='-D NO_ASM'

(A space is required between '-D' and 'NO_ASM'.) With the patch, plain 
'./configure CC="cc -m64" CFLAGS=-g' should also work.

Subject: gzip-1.7: Segmentation Fault with solarisstudio12.4 on Solaris10 x64
From: Kiyoshi KANAZAWA <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Mon, 28 Mar 2016 18:46:37 +0900 (JST)
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

I tried to build gzip-1.7 with solarisstudio12.4 cc, on Solaris10 x64,

and had 'Segmentation Fault' in make check.

% ./configure CC=cc CFLAGS='-m64 -g'
% make
% make check
  GEN      public-submodule-commit
make  check-recursive
make[1]: Entering directory '/tmp/gzip-1.7'
Making check in lib
make[2]: Entering directory '/tmp/gzip-1.7/lib'
make  check-am
make[3]: Entering directory '/tmp/gzip-1.7/lib'
make[3]: Leaving directory '/tmp/gzip-1.7/lib'
make[2]: Leaving directory '/tmp/gzip-1.7/lib'
Making check in doc
make[2]: Entering directory '/tmp/gzip-1.7/doc'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/tmp/gzip-1.7/doc'
Making check in .
make[2]: Entering directory '/tmp/gzip-1.7'
make  check-local
make[3]: Entering directory '/tmp/gzip-1.7'
  GEN      gzip.doc.gz
/bin/bash: line 1: 22685 Segmentation Fault      (core dumped) ./gzip < ./gzip.doc > gzip.doc.gz-t
Makefile:2173: recipe for target 'gzip.doc.gz' failed
make[3]: *** [gzip.doc.gz] Error 139
make[3]: Leaving directory '/tmp/gzip-1.7'
Makefile:1985: recipe for target 'check-am' failed
make[2]: *** [check-am] Error 2
make[2]: Leaving directory '/tmp/gzip-1.7'
Makefile:1712: recipe for target 'check-recursive' failed
make[1]: *** [check-recursive] Error 1
make[1]: Leaving directory '/tmp/gzip-1.7'
Makefile:1987: recipe for target 'check' failed
make: *** [check] Error 2

% dbx gzip core
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 8.0' in your .dbxrc
Reading gzip
core file header read successfully
Reading ld.so.1
Reading librt.so.1
Reading libc.so.1
Reading libaio.so.1
Reading libmd.so.1
program terminated by signal SEGV (no mapping at the fault address)
0x0000000000428885: ldexp+0x1eb8d:      movl     0x0000000000000014(%esp),%esi
Current function is deflate
  764               match_length = longest_match (hash_head);
(dbx) where                                                                                  
  [1] 0x428885(0x6, 0x31, 0x7, 0x2529, 0xfefa, 0x7), at 0x428885 
=>[2] deflate(), line 764 in "deflate.c"
  [3] zip(in = 0, out = 1), line 80 in "zip.c"
  [4] treat_stdin(), line 775 in "gzip.c"
  [5] main(argc = 1, argv = 0xfffffd7fffdfe4d8), line 665 in "gzip.c"

After gzip dies, gzip.doc.gz-t is null (size is 0).

Best Regards,

--- Kiyoshi <[email-masked]>