Thread View: pb.unix
1 messages
1 total messages
Started by Marnix van Ammers
Tue, 17 Oct 1989 23:08
Bug/problem in ksh88b and/or SUN OS
Author: Marnix van Ammers
Date: Tue, 17 Oct 1989 23:08
Date: Tue, 17 Oct 1989 23:08
103 lines
3885 bytes
3885 bytes
My ksh88b was dumping core on my SUN 3/50. It would happen
whenever the first command I executed was a particular function in
my $FPATH. I traced it down to the first echo command in my function.
When I recompiled ksh88b with ECHOPRINT set to 1 in the OPTIONS file,
the core dumps stopped.
I found out that when the core dump happened, the call to
path_absolute() at line 1084 of sh/name.c returned a NULL pointer
and that NULL pointer was then passed to strcmp() at line 1086.
The strcmp() function in SUN OS 4.0.3 apparently cannot take a NULL
argument (maybe this is really something SUN ought to fix?).
I could not figure out why path_absolute was returning a NULL
pointer. When I used the dbxtool debugger I'd end up getting
a "Trace/BPT trap(coredump)" before getting to where my normal core
dump was occurring. I don't know what a "Trace/BPT trap(coredump)"
(BPT == Break Point Trap ??) is but it seems to be a feature or
problem with the debugger (I'm new at this dbx stuff, so forgive me).
I was able to at least fix the problem by not passing a NULL pointer
to strcmp().
Here are the diffs to my fix (to sh/name.c):
1085a1086,1104
>
> /* Core dumping fix
>
> By: Marnix A. van Ammers
> Oct 12, 1989
> {att|pacbell}!pttesac!mavanamm
>
> Following fix added to avoid core dump by eq() when cp is NULL.
> (Happens when path_absolute() in echo_mode() returns NULL.)
> That situation happened when the first command to use echo was in my
> function gp() and OPTIONS had ECHOPRINT=0 and there is a
> /bin/echo as in the case of my Sun 3/50 running SUNOS 4.0.3 */
>
> if(cp == NULL)
> echo_arg = (char *) e_minus;
> else
>
> /* end of core dumping fix. */
>
For your information, here's my autoload function gp (I've since
changed this function, but this is the version that caused
ksh88b to dump core in my SUN):
#################################################################
function getpaths {
if [ "$1" = -x ];then
set -x;shift
fi
# getpaths($PATH) -- Return list of paths in $1
typeset PATH="$1"
typeset This_Path Front_Part Paths
while [ -n "${PATH}" ];do # While there's something in $PATH
Front_Part="${PATH%%:*}" # Remove 1st ':' and all to the right of it
if [ -z "$Front_Part" ];then # Front part was null -- special case
This_Path="."
Front_Part=":"
else
This_Path="$Front_Part"
fi
Paths="$Paths $This_Path"
PATH="${PATH#${Front_Part}}"
if [ "${PATH}" != ":" ];then # If this isn't the last (trailing) ':'
PATH="${PATH#:}" # then remove the leading ':'
fi
done
echo "$Paths"
}
# gp = getpath . Finds a *command* and does an ls -l on it
# For instance "gp sh" should find sh, rsh, ksh, rksh
function gp {
if [ "$1" = -x ];then
set -x;shift
fi
typeset F Files PATHS P
print "Searching for executables \"*$1*\" in \$PATH" >&2
PATHS=`getpaths "$PATH"`
for P in $PATHS;do
for F in $P/*$1*;do
if [ -f "$F" -a -x "$F" ];then
Files="$Files $F"
fi
done
done
if [ -n "$Files" ];then
ls -ld $Files
fi
}
#################################################################
I don't seem to have the real problem in hand, but I did just want
to report this to the net in case anyone has an idea what's really
going on.
--
Marnix
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads