Subject: Re: pkg/30333
To: None <solaris-pkg-people@netbsd.org, gnats-admin@netbsd.org,>
From: Idar Tollefsen <idart@performancedesign.no>
List: pkgsrc-bugs
Date: 07/20/2005 10:14:02
The following reply was made to PR pkg/30333; it has been noted by GNATS.

From: Idar Tollefsen <idart@performancedesign.no>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: pkg/30333
Date: Wed, 20 Jul 2005 12:13:09 +0200

 I think I'll have to modify this report. Current zsh version in pkgsrc is 4.2.5.
 
 As it turns out, there's no need to change the use of "exists" since it never 
 reaches this part of the Makefile unless ZSH_STATIC is set to YES. As stated in 
 the original report, zsh can't be built static on Solaris 10 since Sun no longer 
 ships static versions of various system libraries. So the only "real" problem 
 here is forcing it to use ZSH_STATIC=NO if on Solaris 10.
 
 The original errors occurred when using GCC 3.4.3. When using the SunPro 
 compiler (CC: Sun C++ 5.7 Patch 117830-02 2005/03/30) the iconv issue goes away.
 
 However, using the SunPro compiler I got "access to address exceeded 
 protections" and it segfaulted when I tried to run it. Here's a stack trace:
 
 zsh: segmentation fault (core dumped)  ./zsh
 dbx zsh core
 For information about new features see `help changes'
 To remove this message, put `dbxenv suppress_startup_message 7.4' in your .dbxrc
 Reading zsh
 core file header read successfully
 Reading ld.so.1
 Reading libsunperf.so.6
 Reading libfui.so.2
 Reading libfai.so.3
 Reading libfsu.so.1
 Reading libmtsk.so.1
 Reading libsunmath.so.1
 Reading libm.so.2
 Reading libc.so.1
 Reading libdl.so.1
 Reading libpthread.so.1
 Reading libm.so.1
 Reading libfsu_isa.so.1
 Reading libnsl.so.1
 Reading libmp.so.2
 Reading libmd5.so.1
 Reading libscf.so.1
 Reading libdoor.so.1
 Reading libuutil.so.1
 Reading libcurses.so.1
 Reading libc_psr.so.1
 Reading zle.so
 Reading complete.so
 Reading compctl.so
 t@1 (l@1) program terminated by signal SEGV (access to address exceeded protections)
 0xffffffff7a119884: zrefresh+0x18dc:    clr      [%i5]
 (dbx) where
 current thread: t@1
 =>[1] zrefresh(0x0, 0xffffffff7a251f0c, 0x0, 0xbd8, 0x10020dad0, 
 0xffffffff7d9017fc), at 0xffffffff7a119884
    [2] zleread(0x1001f14f8, 0x968, 0xd60, 0xeb8, 0xa08, 0xffffffff7a246aa0), at 
 0xffffffff7a139c30
    [3] 0x10004f90c(0x1001f1, 0x1001f0, 0x1001eef20, 0x100000, 0x1001f1, 
 0x1001f1000), at 0x10004f90b
    [4] 0x10004c28c(0x1002037ca, 0x100000, 0x1001ee000, 0x1001ec370, 0x1001ef000, 
 0x1001ec000), at 0x10004c28b
    [5] 0x100099ebc(0x1001f0, 0x100099eb8, 0x0, 0x0, 0x100000, 0x1001f0000), at 
 0x100099ebb
    [6] gettok(0xffffffff7c3eafc0, 0x1084, 0x100000, 0xffffffffffffffff, 
 0x1001f0000, 0x1001ef000), at 0x10005e2c8
    [7] yylex(0x0, 0x0, 0x1001ee000, 0x24, 0x1001ee, 0x100000), at 0x100033674
    [8] parse_event(0x1001ee000, 0x1001ef, 0x24, 0x100000, 0x100000, 0x1001ee), 
 at 0x10004c550
    [9] promptexpand(0x1, 0x0, 0x0, 0x1001ee000, 0x1001eef20, 0x1001ef0f0), at 
 0x10004d170
    [10] bin_setopt(0x1001ec, 0x100000, 0x1, 0x100000, 0x1001ec000, 0x1001eef20), 
 at 0x100072f9c
 
 It turns out that this was due to my use of the sunperf library. When I removed 
 it from my compiler flags, zsh worked just fine again. Here's a patch against 
 Makefile.common to do that if using the SunPro compiler:
 
 --- Makefile.common.orig	Tue Jul 19 14:53:18 2005
 +++ Makefile.common	Wed Jul 20 12:07:30 2005
 @@ -72,6 +72,10 @@
   CONFIGURE_ARGS+=--with-tcsetpgrp
   .endif
 
 +.if ${PKGSRC_COMPILER} == "sunpro"
 +CFLAGS:=	${CFLAGS:N-xlic_lib=sunperf}
 +.endif
 +
   .undef MANZ
 
   PKG_SHELL=	${PREFIX}/bin/zsh