Le decadi 30 floréal, an CCXII, Clint Adams a écrit :
> If you rebuild the deb with DEB_BUILD_OPTIONS="debug", you'll get some
> more verbose output from gdb.
I built only with ./configure, but I confess I did not check that the
build options enabled debugging, as they usually do with ./configure. I
re-tried with --enable-zsh-debug --enable-zsh-mem-debug
--enable-zsh-hash-debug. Here is the new backtrace:
Program received signal SIGSEGV, Segmentation fault.
0x4011513c in mallopt () from /lib/tls/i686/cmov/libc.so.6
(gdb) where
#0 0x4011513c in mallopt () from /lib/tls/i686/cmov/libc.so.6
#1 0x080b3f30 in gettext2 (state=0x40aa6070) at text.c:343
Previous frame inner to this frame (corrupt stack?)
> zsh doesn't call mallopt() directly; it's probably being called from
> another libc function such as free(). Can you repeat the problem under
> valgrind with appropriate options? Does it reveal anything?
I do not know valgrind, so I am not sure which are the appropriate
options, but a raw "HOME=/tmp/empty valgrind ./Src/zsh" gives sime
interesting details:
[snip a lot of initialization]
zsh: failed to load module: zsh/zle <--- I did not make install
ssecem% alias frobnicate="LC_CTYPE=en_US.UTF-8"
ssecem% alias date="frobnicate date"
ssecem% function date { command date; echo done }
ssecem% date
==29387== Warning: invalid file descriptor -1 in syscall close()
==29387== Warning: invalid file descriptor -1 in syscall close()
Tue May 18 21:11:15 CEST 2004
done
ssecem% date
==29385==
==29385== Invalid free() / delete / delete[]
==29385== at 0x3C01F918: free (vg_replace_malloc.c:127)
==29385== by 0x808DC1D: zsfree (mem.c:1399)
==29385== by 0x809B2D1: delenv (params.c:3455)
==29385== by 0x80698F3: save_params (exec.c:2523)
==29385== Address 0x3C3C9B24 is 0 bytes inside a block of size 21 free'd
==29385== at 0x3C01F918: free (vg_replace_malloc.c:127)
==29385== by 0x808DC1D: zsfree (mem.c:1399)
==29385== by 0x809B1A8: addenv (params.c:3402)
==29385== by 0x8069C67: restore_params (exec.c:2594)
==29389== Warning: invalid file descriptor -1 in syscall close()
==29389== Warning: invalid file descriptor -1 in syscall close()
Tue May 18 21:11:17 CEST 2004
done
Again, I can make a core file available if you need it. I guess the
final core would be rather useless, since according to valgrind, the
memory is probably already corrupted at this point, but I can use gdb to
produce a core at the entrance of save_params.
Attachment:
pgpOqpbneDR3s.pgp
Description: PGP signature