Xref: utzoo comp.unix.questions:17035 comp.unix.wizards:18754 Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!uwm.edu!uakari.primate.wisc.edu!ctrsol!seth From: seth@ctr.columbia.edu (Seth Robertson) Newsgroups: comp.unix.questions,comp.unix.wizards Subject: Re: ksh dumping core Keywords: ksh SunOS Message-ID: <1989Oct18.201810.17331@ctr.columbia.edu> Date: 18 Oct 89 20:18:10 GMT References: <834@fozzy.UUCP> Reply-To: seth@ctr.columbia.edu (Seth Robertson) Organization: Columbia University Center for Telecommunications Research Lines: 118 In article <834@fozzy.UUCP> fail@fozzy.UUCP (Dennis Fail) writes: >goes to another >workstation, logs in, and does some work and then goes back to his >workstation and try to use his windows that he was working in, they will >dump core. This doesn't happen all the time, but with enough frequency >to be a problem. > > I've isolated the problem to be in the history function of ksh >As a side note, we had had problems with the previous version of ksh >corrupting the history file after an rlogin, but it would never dump core. The way I solved the corrupted history file problem was to change the history file for each pty. I assume that this would solve your problem also. From my .kshrc: (The file that gets read in every time a ksh starts. If you do not have this feature, you could stick it in .profile) ------------------------------------------------------------ ## ## Source the people's startup file. . /public/etc/kshsetup ## ## Set it up so that it prints the contents of ~/.face when I log out if test "$0" = "su" -o "$0" = "-su" then # WatchOut gets set if there is already another history file existing # with the same name (i.e. don't delete it) if test "$WatchOut" then # Keep the history file and don't print a closing screen # (Because if you su, you don't want your history file to disappear :-) trap 'trap 0; exec ~/.kshout save no; kill -9 0; exit; exit' 0 else # Delete the history file and don't print a closing screen trap 'trap 0; exec ~/.kshout kill no; kill -9 0; exit; exit' 0 fi else if test "$0" = "-ksh" then # Delete the histry file and print a closing screen trap 'trap 0; exec ~/.kshout kill yes; kill -9 0; exit; exit' 0 else # Delete the history file but don't print a closing screen trap 'trap 0; exec ~/.kshout kill no; kill -9 0; exit; exit' 0 fi fi ------------------------------------------------------------ From my .kshout ------------------------------------------------------------ : ${tty:=`tty`} : ${pty:=`basename $tty`} : ${host:=`hostname`} # If argv[1] is `kill' then we are supposed to get rid of the # ksh history file if test "$1" = "kill" then if test "$pty" = "console" then rm -f .ksh.$host.* ~/core else : ${HISTFILE:="$HOME/.ksh.$host.$pty.$USER"} rm -f "$HISTFILE" ~/core fi fi # If argv[2] is `yes' then we are supposed to print a closing screen if test "$2" = "yes" then clear cat ~/.face fi ------------------------------------------------------------ From /public/etc/kshsetup: ------------------------------------------------------------ : ${tty:=`tty`} : ${pty:=`basename $tty`} : ${host:=`hostname`} if test -f "$HOME/.ksh.$host.$pty.$USER" then WatchOut="true" fi HISTFILE="$HOME/.ksh.$host.$pty.$USER" . /public/etc/kshenv # Set up some special features ------------------------------------------------------------ That should solve the problem by having a seperate history file for each invocation of ksh. I'll include the public/etc/kshenv for those who are interested: ------------------------------------------------------------ : ${tty:=`tty`} : ${pty:=`basename $tty`} if test "$pty" = "console" then # 3.4 machines don't run sunview if test -d /var then : else alias sunview=suntools fi else alias sunview="echo 'This is not allowed unless you are on the console.'" alias suntools="echo 'This is not allowed unless you are on the console.'" fi alias logout="exit" # Plus some more CTR specific stuff ------------------------------------------------------------ Hope this helps, -Seth Robertson seth@ctr.columbia.edu -- -Seth Robertson seth@ctr.columbia.edu