Return to BSD News archive
Newsgroups: comp.os.386bsd.bugs
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!bunyip.cc.uq.oz.au!munnari.oz.au!spool.mu.edu!howland.reston.ans.net!pipex!uunet!sawmill!sawmill!rjk
From: rjk@sparcmill.grauel.com (Richard J Kuhns)
Subject: possible execl() bug in FreeBSD 2.0
Message-ID: <RJK.94Dec28105837@sparcmill.grauel.com>
Followup-To: comp.os.386bsd.bugs
Sender: root@sawmill.uucp (Admin (csh))
Nntp-Posting-Host: sparcmill
Organization: Grauel Enterprises, Inc.
Date: 28 Dec 1994 15:58:37 GMT
Lines: 57
After switching to FreeBSD v2.0 (installed from the Walnut Creek CDRom), I
could no longer access the cartridge tape drive on another machine on our
local net using (GNU)tar, as follows:
freebsd:~/Src/tar-1.11.2$ ./tar -tvf sparcmill:/dev/rmt/0
./tar: ready to try pipe
./tar: ready to fork
./tar: ready to try execl
./tar: can't open sparcmill:/dev/rmt/0 : Input/output error
freebsd:~/Src/tar-1.11.2$
--I added the `ready to' messages because the core file that was left wasn't
very useful:
freebsd:~/Src/tar-1.11.2$ gdb ./tar ./tar.core
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.11 (i386-unknown-freebsd), Copyright 1993 Free Software Foundation, Inc...
Core was generated by `tar'.
Program terminated with signal 11, Segmentation fault.
#0 0x804b986 in end ()
(gdb) bt
#0 0x804b986 in end ()
Cannot access memory at address 0x24de4.
(gdb)
freebsd:~/Src/tar-1.11.2$
tar was apparently dieing in the section of code in rtapelib.c that tries
to execl() various alternative names for the remote shell program until one
works:
execl ("/usr/ucb/rsh", "rsh", system,
"/etc/rmt", (char *) 0);
execl ("/usr/bin/remsh", "remsh", system,
"/etc/rmt", (char *) 0);
execl ("/usr/bin/rsh", "rsh", system,
"/etc/rmt", (char *) 0);
execl ("/usr/bsd/rsh", "rsh", system,
"/etc/rmt", (char *) 0);
execl ("/usr/bin/nsh", "nsh", system,
"/etc/rmt", (char *) 0);
After I removed all of the unnecessary execl()s, leaving only the one for
"/usr/bin/rsh", tar was able to access the remote tape drive with no
problems.
It looks (to me, anyhow) like the unsuccessful execl()s are corrupting
something that they shouldn't be.
If I can provide any more help tracking it down, please let me know.
--
Rich Kuhns rjk@grauel.com
PO Box 6249
100 Sawmill Road
Lafayette, IN 47903
(317)477-6000 x319