ksh dumping core
Dennis Fail
fail at fozzy.UUCP
Thu Oct 19 03:41:07 AEST 1989
Help,
We recently obtained the ksh-88 source from the toolchest and installed
on our newtwork of Sun3's and sun4's running SunOS 4.0.3. The problem
we have been having is that suddenly a window will die because it's
parent process ksh has dumped core. The best that I can determine is that
when when someone is working at their Sun workstation with ksh as their
login shell and then rlogin's or physically gets up and 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 the
following dbx dialog will tell, but I am at a loss of what to do about.
Is it a ksh bug, is it something wrong in the configuration. All the users
HOME directorys are NFS mounted on every machine and they all use .sh_history
as the history file and I am suspecting that this sharing of the file
has something to do with it, but thats just an un-educated guess.
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.
When we tried to recall a line after a rlogin the shell would just beep
at you, doing a history command would display a list of numbers something
like this: 200 252 201 ...
To fix this we would do an 'exec ksh' and everything would be fine.
Here is the dbx dialog
dbx /bin/ksh core
Reading symbolic information...
Read 14645 symbols
(dbx) where
hist_eof(), line 430 in "isda/fail/sun-src/ksh-i/src/sh/history.c"
exfile(), line 377 in "isda/fail/sun-src/ksh-i/src/sh/main.c"
main(c = 1, v = 0xefffc40, 0xefffc48), line 280 in "isda/fail/sun-src/ksh-i/src/sh/main.c"
(dbx) list
430 register off_t count = fp->fixcnt;
431 int skip = 0;
432 io_seek(fp->fixfd,count,SEEK_SET);
433 #ifdef INT16
434 while((c=io_getc(fp->fixfd))!=EOF)
435 {
436 #else
437 /* could use io_getc() but this is faster */
438 while(1)
439 {
(dbx) print fp
`history`hist_eof`fp = (nil)
(dbx)
I guess the nil pointer is causing the cre dump, but I dont know why it is nil.
Any clues anybody.
Thanks
Dennis Fail
Rockwell Int.
{uunet | attctc}!fozzy!fail
More information about the Comp.unix.questions
mailing list