[PR] The csh core dump on FreeBSD-6.0-STABLE
Z R
fblist at gmail.com
Tue Dec 6 01:04:51 PST 2005
Hi,
Today, I want to copy a file to a msdosfs mounted on my
FreeBSD-6.0-STABLE. I typed "cp xxxx /data1/books", then I hit the TAB. It
doesn't response. After a few seconds, the "login:" appears. The csh core
dump.
In the /var/log/message, says "dos2unixtime(): month value out of range
(15)" and "pid 551 (csh), uid 0: exited on signal 8". Then I "gdb" the
csh.core, then "where" says:
#0 0x0806a1e6 in globfree ()
#1 0x0806ab66 in globfree ()
#2 0x0806b440 in globfree ()
#3 0x080747c4 in globfree ()
#4 0x0805c552 in ?? ()
#5 0x00000000 in ?? ()
.
.
.
#20 0x08080446 in realloc ()
#21 0x0805e117 in ?? ()
#22 0x00000000 in ?? ()
.
.
.
.
#325 0x281b6931 in _none_init () from /lib/libc.so.6
#326 0x0813000d in ?? ()
#327 0x281cc4e4 in ?? () from /lib/libc.so.6
#328 0xbfbeeb58 in ?? ()
#329 0x2813afb4 in wctomb () from /lib/libc.so.6
#330 0x0804a6ce in ?? ()
#331 0x080d1fbc in environ ()
#332 0x00000000 in ?? ()
#333 0xbfbf6c38 in ?? ()
#334 0x00000000 in ?? ()
.
.
.
.
#642 0x28149ffe in sigsetmask () from /lib/libc.so.6
#xxx 0x00000000 in ?? ()
.
.
.
.
#8599 0x28090d9a in malloc () from /libexec/ld-elf.so.1
.
.
.
.
#8605 0x08081a18 in __divdi3 ()
#8606 0x00000001 in ?? ()
Then, I test how can reproduce the problem. Here's the details.
fstab: /dev/ad0s5 /data1 msdosfs rw,
-L=zh_CN.eucCN 2 2
In the /data1/books, there are some files have a Chinese filename.
If I setenv "LANG zh_CN.eucCN" and "LC_CTYPE zh_CN.eucCN", the problem will
not happen. If I remove these env variables, the problem reproduces.
csh: --version
tcsh 6.14.00 (Astron) 2005-03-25 (i386-intel-FreeBSD) options
wide, nls, dl, al, kan, rh, color, filec
And my /etc/csh.cshrc:
# $FreeBSD: src/etc/csh.cshrc,v 1.3 1999/08/27 23:23:40 peter
Exp $
#
# System-wide .cshrc file for csh(1).
set ostype = `uname -s` # sad, no?
# pretty path
set path = ( ~/bin /bin /usr/local/bin /usr/local/sbin /usr/bin
/sbin \
/usr/sbin /usr/X11R6/bin /usr/local/jdk1.3.1/bin \
)
if ( -d "/usr/games" ) set path = ( $path /usr/games )
if ( -d "/usr/ports" ) set path = ( $path
/usr/ports/Tools/scripts )
if ( -d "/var/qmail" ) set path = ( $path /var/qmail/bin )
if ( -d "/home/des/bin" ) set path = ( $path /home/des/bin )
# settings
set autocorrect # fix my mistakes.
set autolist = ambiguous #
set cdpath = ( ~ ) # lazy
set complete = enhance # vi f.b completes to foo.bar!
set correct = cmd # correct what i type.
set filec # file completion
set prompt = '[%B%n@%m%b] %B%~%b%# '
set history = 100 # history buffer
set notify # don't wait for activity; instant job
status
set watch=(0 any any) # who's here?
unset autologout # idle.
unset noglob #
# environment setup
setenv EXINIT "set ai"
setenv IRCNAME "Xin LI <delphij at FreeBSD.org>"
setenv PAGER "less"
setenv LSCOLORS ExGxFxdxCxegedabagExEx
if ( -d "~/tmp" ) setenv TMPDIR "$HOME/tmp" # secure.
if (! $?term) exit # if we don't have a terminal, bail.
# nifty prompt. xterm title if we're in an xterm...
switch ($term)
case "aterm":
case "rxvt":
case "screen":
case "xterm":
case "xterm-color":
setenv TERM xterm
set xterm="%{\033]2;%n@%m:%~\007%}%{\033]1;%m\007%}"
breaksw
default:
set xterm=""
endsw
unset xterm
# aliases because I am lazy
alias \! 'h'
alias c 'clear'
alias dist.cshrc 'xapply "scp .cshrc %1:." `cat .hosts`'
alias dosort 'sort -o \!* \!*'
alias eg 'egrep'
alias f 'find . -name \!* -print'
alias ff 'find . -name \!* -exec ls -l {} \;'
alias g 'grep'
alias h 'history'
alias j 'jobs -l'
alias l 'less'
alias ll 'ls -Fla'
alias lld 'ls -Fald'
alias ls 'ls -GFa'
alias m 'make'
alias mq 'mailq'
alias mqg 'mailq | grep \!*'
alias newhost 'xapply "scp %1 \!*\:."
.ssh/authorized_keys .cshrc'
alias r 'rehash'
alias res 'source ~/.cshrc'
alias z 'suspend'
# bah.
switch ($ostype)
case "SunOS":
set psargs = "-ef"
set psargs2 = "-fu $USER"
breaksw
default:
set psargs = "-auwx"
set psargs2 = "-ux"
endsw
alias psa 'ps $psargs'
alias psx 'ps $psargs2'
alias psg 'ps $psargs | grep \!* | grep -v grep'
# cool autocomplete goodness
# this has a tab completion for hosts. yay!
set hosts
set noglob
foreach f ($HOME/.hosts $HOME/.rhosts)
if ( -r $f ) then
set hosts = ($hosts `grep -v "+" $f | tr -s " " " " | cut
-f 1`)
endif
end
# more complete loving.
complete -%* c/%/j/
complete {alias,unalias} p/1/a/
complete {bg,fg,stop} c/%/j/ p/1/"(%)"//
complete cat n/*/f/
complete cd p/1/d/
complete chgrp c/-/"(c f h R v -)"/ n/-/g/ p/1/g/ n/*/f/
complete chown c/-/"(c f h R v -)"/ C@[./\$~]@f@
c/*[.:]/g/ \
n/-/u/. p/1/u/. n/*/f/
complete exec p/1/c/
complete ftp c/-/"(d i g n v)"/ n/-/\$hosts/ p/1/\$hosts/
n/*/n/
complete finger c/*@/\$hosts/ n/*/u/@
complete kill 'c/-/S/' 'c/%/j/' \
'n/*/`ps -xu $LOGNAME | awk '"'"'{print $2}'"'"'`/'
complete {killall,pkill} c/-/S/ n/*/c/
complete make 'n/-f/f/' 'c/*=/f/' \
'n@*@`cat -s GNUmakefile Makefile makefile |& sed -n
-e "/No such file/d" -e "/^[^ #].*:/s/:.*//p"`@'
complete mutt c@=@F:$HOME/Mail/@
complete ping p/1/\$hosts/
complete {portupgrade,pkg_delete,pkg_info} c/-/"(f x)"/
p@*@D:/var/db/pkg@@
complete rmdir n/*/d/
complete set 'c/*=/f/' 'p/1/s/=' 'n/=/f/'
complete ssh p/*/\$hosts/ c/-/t/ n/-l/u/
complete sudo n/-l/u/ p/1/c/
complete talk p/1/'`users | tr " " "\012" | uniq`'/ \
n/*/\`who\ \|\ grep\ \$:1\ \|\ awk\ \'\{\ print\
\$2\ \}\'\`/
complete telnet p/1/\$hosts/ p/2/x:'<port>'/ n/*/n/
complete traceroute p/1/\$hosts/
complete unset n/*/s/
complete vi p/1/t/
complete which n/*/c/
complete xhost c/[+-]/\$hosts/ n/*/\$hosts/
complete xpdf n/*/f:*.pdf/
unset noglob
bindkey -k up history-search-backward
bindkey -k down history-search-forward
bindkey "^W" backward-delete-word
If you want more information, mail me please :) It's my pleasure.
Thanks.
More information about the freebsd-stable
mailing list