[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