From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15269 invoked by alias); 27 Oct 2016 19:42:09 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 22037 Received: (qmail 408 invoked from network); 27 Oct 2016 19:42:09 -0000 X-Qmail-Scanner-Diagnostics: from mail-oi0-f46.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(209.85.218.46):SA:0(0.0/5.0):. Processed in 0.359918 secs); 27 Oct 2016 19:42:09 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,SPF_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: paulo.cesar.pereira.de.andrade@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.218.46 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=MDzLdfjGGwuS5aY/fJCSPx/q+SKAUbWxuhT9ij3/xNw=; b=YT92YUai6NHYnp3qL2kC5ggf+k5lHUT2QBxGSaQ+rWJgA8lQ6rAWuylCO4s73+Iuo+ 0Ril5RbqY7ibD1az2HJlnF/0H9RQ6ffLCJwZsJStozYr3VLejkbhh4BCgPVlRBlTvYz+ FZI5p4eCFQIe1xfe8qB9JZ+33SjwMlgew3URViZNYvl7Se3GUoFfbfI0HeiJEKPep8D3 YvmbyT/NfrB4MB5XyuzPl+vAn5zOuqHC3DfpaCua8o4kC+GLuMgB/fVRjacAGi40Qx8B GKojvieIT2RSLHtIExW+2Sbwc45r2BLzKXYhTNiwVROY/ZNNsSgV2ykin9Y6YtBaMKm/ nq0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=MDzLdfjGGwuS5aY/fJCSPx/q+SKAUbWxuhT9ij3/xNw=; b=hwiXp8oachLkXMo8IkIyEVdg6E8VNM+BIpE/U8jKZMycocdQdgQv8B5kZcVCzsAoFM 8GvgpnKZv6ysUDl/J++hau4fQ5SqvasWWY6kj7yGWUTHSNCrH6Oa3JRUnn3U8Rbbw5Zx s2tlCZ34y3hZRP/vSoH3enaS7gPv1e0FXKmwWEHC/sQTaT04dWbeYuzZ8rpiZB14lPGq twNAQH/Heb6Kx/NGYUBtP6zFTtW5vVwECojwNI/opU14J0vKBC0xaMUb075QfKkdQ08Z GOWeZZo4tEd8u3WPOwhLQ/tbB0hQItVYGU33KDDLBJ2B5CzNQQ5tiJuy39bVU0z/rofV Em2g== X-Gm-Message-State: ABUngvc0XiG+3FjJCt3D+C9PkuJI+wVxAgwSpVGQfNMoIMZc3gSZM1pRxtXAP+9i37wgUw4dvhSR58b7rrBU0Q== X-Received: by 10.157.17.252 with SMTP id y57mr4013699oty.138.1477590704463; Thu, 27 Oct 2016 10:51:44 -0700 (PDT) MIME-Version: 1.0 From: =?UTF-8?Q?Paulo_C=C3=A9sar_Pereira_de_Andrade?= Date: Thu, 27 Oct 2016 15:51:43 -0200 Message-ID: Subject: $HOME not set and zsh crashing in emulation mode To: zsh-users@zsh.org Content-Type: text/plain; charset=UTF-8 A simple reproducer: """ $ cat t.sh #!/bin/sh echo $HOME $ ln -sf /bin/zsh ksh $ ./ksh -n t.sh Segmentation fault (core dumped) """ This probably is not correct, but a possible patch is: ---8<--- --- zsh-5.0.2/Src/init.c.orig 2016-10-27 15:36:29.210875166 -0200 +++ zsh-5.0.2/Src/init.c 2016-10-27 15:36:33.581867451 -0200 @@ -963,7 +963,7 @@ setupvals(void) if (EMULATION(EMULATE_ZSH)) ptr = home; else - ptr = zgetenv("HOME"); + ptr = home = zgetenv("HOME"); if (ptr && ispwd(ptr)) pwd = ztrdup(ptr); else if ((ptr = zgetenv("PWD")) && (strlen(ptr) < PATH_MAX) && ---8<--- The problem happens because when importing the environment, setstrvalue will return too early with -n, but will always set HOME if not in emulation mode: mod_export void setstrvalue(Value v, char *val) { if (unset(EXECOPT)) return; From gdb: (gdb) b setstrvalue (gdb) cond 1 (strcmp(val, "/home/pcpa") == 0) Breakpoint 1, setstrvalue (val=0x6e0b00 "/home/pcpa", v=0x7fffffffd950) at params.c:2267 2267 if (unset(EXECOPT)) (gdb) bt #0 setstrvalue (val=0x6e0b00 "/home/pcpa", v=0x7fffffffd950) at params.c:2267 #1 assignsparam (s=0x7ffff7ff5cc4 "", s@entry=0x7ffff7ff5cc0 "HOME", val=0x6e0b00 "/home/pcpa", flags=, flags@entry=0) at params.c:2738 #2 0x00000000004712fe in createparamtable () at params.c:737 #3 0x000000000044823f in setupvals () at init.c:988 #4 0x000000000044a1ac in zsh_main (argc=, argv=) at init.c:1596 #5 0x000000000040e3f0 in main (argc=3, argv=0x7fffffffde78) at ./main.c:93 Thanks, Paulo