From: Stefano Lattarini <stefano.lattarini@gmail.com>
To: zsh-workers@zsh.org
Subject: [MAYBE BUG] resetting `$0' in sourced script causes zsh to crash on Debian
Date: Fri, 6 Nov 2009 19:49:31 +0100 [thread overview]
Message-ID: <200911061949.32084.stefano.lattarini@gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 2577 bytes --]
Hi everybody.
I have recently found a problem in resetting `$0' inside a script "sourced"
with the `.' builtin.
Not sure if it's a bug or if it's just me doing something that should not
be done; hopefully you can tell.
Here are some minimal examples exposing the problem:
-*-*-*-
$ cat main1.zsh
0=x
v1=$0
v2=`echo "$0" | sed 's/x/y/g'`
echo 0="$0"
echo v1="$v1"
echo v2="$v2"
$ zsh main1.zsh; echo e=$? # this behaves OK
0=x
v1=x
v2=y
e=0
-*-*-*-
$ cat main2.zsh
. ./inc2.zsh
echo 0="$0"'
echo v="$v"
$ cat inc2.zsh
0=x
v=$0
$ zsh main2.zsh; echo e=$? # this causes zsh to crash
*** glibc detected *** zsh: double free or corruption (!prev): 0x08d91a18 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6[0xb7dd98f4]
/lib/i686/cmov/libc.so.6(cfree+0x96)[0xb7ddb896]
zsh[0x80804ba]
zsh(ingetc+0x1a2)[0x8080cc2]
... [CUT] (see the attachement)
b7f87000-b7f88000 rw-p 0001c000 03:47 3156250 /lib/ld-2.9.so
bff71000-bff87000 rw-p bffea000 00:00 0 [stack]
Abortito
e=134
-*-*-*-
$ cat main3.zsh
. ./inc3.zsh
echo 0="$0"'
echo v="$v"
$ cat inc3.zsh
0=x
v=`echo "$0"`
$ zsh main3.zsh; echo e=$? # I'd expect $v to be "x", but...
0=main3.zsh
v=
e=0
-*-*-*-
$ cat main4.zsh
. ./inc4.zsh
echo 0="$0"'
echo v="$v"
$ cat inc4.zsh
setopt no_function_argzero
0=x
v=`echo "$0"`
$ zsh main4.zsh; echo e=$? # this causes zsh to crash
*** glibc detected *** zsh: corrupted double-linked list: 0x0813aa20 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6[0xb7dc836f]
/lib/i686/cmov/libc.so.6[0xb7dc9e6d]
/lib/i686/cmov/libc.so.6(__libc_malloc+0x95)[0xb7dcbcd5]
zsh(zalloc+0x24)[0x808de44]
zsh[0x809e347]
zsh(parse_event+0x2f)[0x80a3fff]
... [CUT] (see the attachement)
b7f75000-b7f76000 rw-p 0001c000 03:47 3156250 /lib/ld-2.9.so
bfb60000-bfb76000 rw-p bffea000 00:00 0 [stack]
-*-*-*-
System information:
$ uname -a
Linux bigio 2.6.26-1-686 #1 SMP Sat Jan 10 18:29:31 UTC 2009 i686 GNU/Linux
$ cat /etc/debian_version
squeeze/sid
$ zsh --version
zsh 4.3.10 (i686-pc-linux-gnu)
$ dpkg -l zsh
ii zsh 4.3.10-5 A shell with lots of features
$ dpkg -l libc6
ii libc6 2.9-25 GNU C Library: Shared libraries
Regards,
Stefano
[-- Attachment #2: main2-btrace.txt --]
[-- Type: text/plain, Size: 4174 bytes --]
*** glibc detected *** zsh: double free or corruption (!prev): 0x08d91a18 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6[0xb7dd98f4]
/lib/i686/cmov/libc.so.6(cfree+0x96)[0xb7ddb896]
zsh[0x80804ba]
zsh(ingetc+0x1a2)[0x8080cc2]
zsh[0x8086bdb]
zsh[0x8087595]
zsh(zshlex+0x190)[0x8088340]
zsh[0x80a3229]
zsh[0x80a1d86]
zsh[0x80a2bde]
zsh[0x80a2df7]
zsh[0x80a2e74]
zsh[0x80a3eae]
zsh(parse_event+0x34)[0x80a4004]
zsh(loop+0x6c)[0x807f5bc]
zsh(zsh_main+0x1ce)[0x808036e]
zsh(main+0x22)[0x8054c92]
/lib/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb7d817a5]
zsh[0x8054bd1]
======= Memory map: ========
08048000-080ca000 r-xp 00000000 03:47 2940818 /bin/zsh4
080ca000-080ce000 rw-p 00081000 03:47 2940818 /bin/zsh4
080ce000-080e1000 rw-p 080ce000 00:00 0
08d83000-08da4000 rw-p 08d83000 00:00 0 [heap]
b7900000-b7921000 rw-p b7900000 00:00 0
b7921000-b7a00000 ---p b7921000 00:00 0
b7a9c000-b7ac6000 r-xp 00000000 03:47 3154466 /lib/libgcc_s.so.1
b7ac6000-b7ac7000 rw-p 00029000 03:47 3154466 /lib/libgcc_s.so.1
b7af1000-b7afb000 r-xp 00000000 03:47 3170741 /lib/i686/cmov/libnss_files-2.9.so
b7afb000-b7afc000 r--p 00009000 03:47 3170741 /lib/i686/cmov/libnss_files-2.9.so
b7afc000-b7afd000 rw-p 0000a000 03:47 3170741 /lib/i686/cmov/libnss_files-2.9.so
b7afd000-b7b06000 r-xp 00000000 03:47 3170754 /lib/i686/cmov/libnss_nis-2.9.so
b7b06000-b7b07000 r--p 00008000 03:47 3170754 /lib/i686/cmov/libnss_nis-2.9.so
b7b07000-b7b08000 rw-p 00009000 03:47 3170754 /lib/i686/cmov/libnss_nis-2.9.so
b7b29000-b7b2e000 rw-p b7b29000 00:00 0
b7b2e000-b7b30000 r-xp 00000000 03:47 1901992 /usr/lib/gconv/ISO8859-15.so
b7b30000-b7b31000 r--p 00001000 03:47 1901992 /usr/lib/gconv/ISO8859-15.so
b7b31000-b7b32000 rw-p 00002000 03:47 1901992 /usr/lib/gconv/ISO8859-15.so
b7b32000-b7b69000 r--p 001f5000 03:47 3367552 /usr/lib/locale/locale-archive
b7b69000-b7d69000 r--p 00000000 03:47 3367552 /usr/lib/locale/locale-archive
b7d69000-b7d6b000 rw-p b7d69000 00:00 0
b7d6b000-b7ec3000 r-xp 00000000 03:47 3170597 /lib/i686/cmov/libc-2.9.so
b7ec3000-b7ec4000 ---p 00158000 03:47 3170597 /lib/i686/cmov/libc-2.9.so
b7ec4000-b7ec6000 r--p 00158000 03:47 3170597 /lib/i686/cmov/libc-2.9.so
b7ec6000-b7ec7000 rw-p 0015a000 03:47 3170597 /lib/i686/cmov/libc-2.9.so
b7ec7000-b7eca000 rw-p b7ec7000 00:00 0
b7eca000-b7eee000 r-xp 00000000 03:47 3170714 /lib/i686/cmov/libm-2.9.so
b7eee000-b7eef000 r--p 00023000 03:47 3170714 /lib/i686/cmov/libm-2.9.so
b7eef000-b7ef0000 rw-p 00024000 03:47 3170714 /lib/i686/cmov/libm-2.9.so
b7ef0000-b7f32000 r-xp 00000000 03:47 3156539 /lib/libncursesw.so.5.7
b7f32000-b7f35000 rw-p 00041000 03:47 3156539 /lib/libncursesw.so.5.7
b7f35000-b7f37000 r-xp 00000000 03:47 3170758 /lib/i686/cmov/libdl-2.9.so
b7f37000-b7f38000 r--p 00001000 03:47 3170758 /lib/i686/cmov/libdl-2.9.so
b7f38000-b7f39000 rw-p 00002000 03:47 3170758 /lib/i686/cmov/libdl-2.9.so
b7f39000-b7f3c000 r-xp 00000000 03:47 3152851 /lib/libcap.so.2.16
b7f3c000-b7f3d000 rw-p 00002000 03:47 3152851 /lib/libcap.so.2.16
b7f3d000-b7f3e000 rw-p b7f3d000 00:00 0
b7f3e000-b7f45000 r--s 00000000 03:47 1896378 /usr/lib/gconv/gconv-modules.cache
b7f45000-b7f5a000 r-xp 00000000 03:47 3170743 /lib/i686/cmov/libnsl-2.9.so
b7f5a000-b7f5b000 r--p 00014000 03:47 3170743 /lib/i686/cmov/libnsl-2.9.so
b7f5b000-b7f5c000 rw-p 00015000 03:47 3170743 /lib/i686/cmov/libnsl-2.9.so
b7f5c000-b7f5e000 rw-p b7f5c000 00:00 0
b7f5e000-b7f65000 r-xp 00000000 03:47 3170735 /lib/i686/cmov/libnss_compat-2.9.so
b7f65000-b7f66000 r--p 00006000 03:47 3170735 /lib/i686/cmov/libnss_compat-2.9.so
b7f66000-b7f67000 rw-p 00007000 03:47 3170735 /lib/i686/cmov/libnss_compat-2.9.so
b7f67000-b7f68000 r--p 0035f000 03:47 3367552 /usr/lib/locale/locale-archive
b7f68000-b7f69000 rw-p b7f68000 00:00 0
b7f69000-b7f6a000 r-xp b7f69000 00:00 0 [vdso]
b7f6a000-b7f86000 r-xp 00000000 03:47 3156250 /lib/ld-2.9.so
b7f86000-b7f87000 r--p 0001b000 03:47 3156250 /lib/ld-2.9.so
b7f87000-b7f88000 rw-p 0001c000 03:47 3156250 /lib/ld-2.9.so
bff71000-bff87000 rw-p bffea000 00:00 0 [stack]
[-- Attachment #3: main4-btrace.txt --]
[-- Type: text/plain, Size: 4064 bytes --]
*** glibc detected *** zsh: corrupted double-linked list: 0x0813aa20 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6[0xb7dc836f]
/lib/i686/cmov/libc.so.6[0xb7dc9e6d]
/lib/i686/cmov/libc.so.6(__libc_malloc+0x95)[0xb7dcbcd5]
zsh(zalloc+0x24)[0x808de44]
zsh[0x809e347]
zsh(parse_event+0x2f)[0x80a3fff]
zsh(loop+0x6c)[0x807f5bc]
zsh(zsh_main+0x1ce)[0x808036e]
zsh(main+0x22)[0x8054c92]
/lib/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb7d6f7a5]
zsh[0x8054bd1]
======= Memory map: ========
08048000-080ca000 r-xp 00000000 03:47 2940818 /bin/zsh4
080ca000-080ce000 rw-p 00081000 03:47 2940818 /bin/zsh4
080ce000-080e1000 rw-p 080ce000 00:00 0
0812c000-0814d000 rw-p 0812c000 00:00 0 [heap]
b7900000-b7921000 rw-p b7900000 00:00 0
b7921000-b7a00000 ---p b7921000 00:00 0
b7a8a000-b7ab4000 r-xp 00000000 03:47 3154466 /lib/libgcc_s.so.1
b7ab4000-b7ab5000 rw-p 00029000 03:47 3154466 /lib/libgcc_s.so.1
b7adf000-b7ae9000 r-xp 00000000 03:47 3170741 /lib/i686/cmov/libnss_files-2.9.so
b7ae9000-b7aea000 r--p 00009000 03:47 3170741 /lib/i686/cmov/libnss_files-2.9.so
b7aea000-b7aeb000 rw-p 0000a000 03:47 3170741 /lib/i686/cmov/libnss_files-2.9.so
b7aeb000-b7af4000 r-xp 00000000 03:47 3170754 /lib/i686/cmov/libnss_nis-2.9.so
b7af4000-b7af5000 r--p 00008000 03:47 3170754 /lib/i686/cmov/libnss_nis-2.9.so
b7af5000-b7af6000 rw-p 00009000 03:47 3170754 /lib/i686/cmov/libnss_nis-2.9.so
b7b17000-b7b1c000 rw-p b7b17000 00:00 0
b7b1c000-b7b1e000 r-xp 00000000 03:47 1901992 /usr/lib/gconv/ISO8859-15.so
b7b1e000-b7b1f000 r--p 00001000 03:47 1901992 /usr/lib/gconv/ISO8859-15.so
b7b1f000-b7b20000 rw-p 00002000 03:47 1901992 /usr/lib/gconv/ISO8859-15.so
b7b20000-b7b57000 r--p 001f5000 03:47 3367552 /usr/lib/locale/locale-archive
b7b57000-b7d57000 r--p 00000000 03:47 3367552 /usr/lib/locale/locale-archive
b7d57000-b7d59000 rw-p b7d57000 00:00 0
b7d59000-b7eb1000 r-xp 00000000 03:47 3170597 /lib/i686/cmov/libc-2.9.so
b7eb1000-b7eb2000 ---p 00158000 03:47 3170597 /lib/i686/cmov/libc-2.9.so
b7eb2000-b7eb4000 r--p 00158000 03:47 3170597 /lib/i686/cmov/libc-2.9.so
b7eb4000-b7eb5000 rw-p 0015a000 03:47 3170597 /lib/i686/cmov/libc-2.9.so
b7eb5000-b7eb8000 rw-p b7eb5000 00:00 0
b7eb8000-b7edc000 r-xp 00000000 03:47 3170714 /lib/i686/cmov/libm-2.9.so
b7edc000-b7edd000 r--p 00023000 03:47 3170714 /lib/i686/cmov/libm-2.9.so
b7edd000-b7ede000 rw-p 00024000 03:47 3170714 /lib/i686/cmov/libm-2.9.so
b7ede000-b7f20000 r-xp 00000000 03:47 3156539 /lib/libncursesw.so.5.7
b7f20000-b7f23000 rw-p 00041000 03:47 3156539 /lib/libncursesw.so.5.7
b7f23000-b7f25000 r-xp 00000000 03:47 3170758 /lib/i686/cmov/libdl-2.9.so
b7f25000-b7f26000 r--p 00001000 03:47 3170758 /lib/i686/cmov/libdl-2.9.so
b7f26000-b7f27000 rw-p 00002000 03:47 3170758 /lib/i686/cmov/libdl-2.9.so
b7f27000-b7f2a000 r-xp 00000000 03:47 3152851 /lib/libcap.so.2.16
b7f2a000-b7f2b000 rw-p 00002000 03:47 3152851 /lib/libcap.so.2.16
b7f2b000-b7f2c000 rw-p b7f2b000 00:00 0
b7f2c000-b7f33000 r--s 00000000 03:47 1896378 /usr/lib/gconv/gconv-modules.cache
b7f33000-b7f48000 r-xp 00000000 03:47 3170743 /lib/i686/cmov/libnsl-2.9.so
b7f48000-b7f49000 r--p 00014000 03:47 3170743 /lib/i686/cmov/libnsl-2.9.so
b7f49000-b7f4a000 rw-p 00015000 03:47 3170743 /lib/i686/cmov/libnsl-2.9.so
b7f4a000-b7f4c000 rw-p b7f4a000 00:00 0
b7f4c000-b7f53000 r-xp 00000000 03:47 3170735 /lib/i686/cmov/libnss_compat-2.9.so
b7f53000-b7f54000 r--p 00006000 03:47 3170735 /lib/i686/cmov/libnss_compat-2.9.so
b7f54000-b7f55000 rw-p 00007000 03:47 3170735 /lib/i686/cmov/libnss_compat-2.9.so
b7f55000-b7f56000 r--p 0035f000 03:47 3367552 /usr/lib/locale/locale-archive
b7f56000-b7f57000 rw-p b7f56000 00:00 0
b7f57000-b7f58000 r-xp b7f57000 00:00 0 [vdso]
b7f58000-b7f74000 r-xp 00000000 03:47 3156250 /lib/ld-2.9.so
b7f74000-b7f75000 r--p 0001b000 03:47 3156250 /lib/ld-2.9.so
b7f75000-b7f76000 rw-p 0001c000 03:47 3156250 /lib/ld-2.9.so
bfb60000-bfb76000 rw-p bffea000 00:00 0 [stack]
next reply other threads:[~2009-11-06 18:55 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-06 18:49 Stefano Lattarini [this message]
2009-11-06 19:59 ` Dan Nelson
2009-11-06 20:38 ` Mikael Magnusson
2009-11-08 12:05 ` Stefano Lattarini
2009-11-06 21:30 ` Peter Stephenson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200911061949.32084.stefano.lattarini@gmail.com \
--to=stefano.lattarini@gmail.com \
--cc=zsh-workers@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).