Coda File System

Newbie problems

From: Matt `os' Williams <os_at_UDel.Edu>
Date: Wed, 7 May 2003 18:06:12 -0400 (EDT)
Greetings all,

I'm experimenting with using Coda to replace some of my NFS usage on my
network, but I am unable to set up a server...  my SrvLog  prints all the
normal "such and such is starting" messages (it does complain about no
VLDB, but that's normal when you have yet to set one up from what I can
tell, and shouldn't keep the server from starting).  After about 12
seconds, the server dies.  strace -s90 codasrv shows this:
...
old_mmap(0x150d3000, 98304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x150d3000
gettimeofday({1052344534, 174192}, NULL) = 0
gettimeofday({1052344534, 174219}, NULL) = 0
gettimeofday({1052344534, 174243}, NULL) = 0
time([1052344534])                      = 1052344534
write(1, "17:55:34 ServerLWP 4 just did a rvmlib_set_thread_data()\n\n", 58) = 58
gettimeofday({1052344534, 174382}, NULL) = 0
old_mmap(0x150ed000, 98304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x150ed000
gettimeofday({1052344534, 174748}, NULL) = 0
gettimeofday({1052344534, 174773}, NULL) = 0
gettimeofday({1052344534, 174797}, NULL) = 0
time([1052344534])                      = 1052344534
write(1, "17:55:34 ServerLWP 5 just did a rvmlib_set_thread_data()\n\n", 58) = 58
gettimeofday({1052344534, 174925}, NULL) = 0
old_mmap(0x15107000, 98304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x15107000
gettimeofday({1052344534, 175353}, NULL) = 0
gettimeofday({1052344534, 175378}, NULL) = 0
gettimeofday({1052344534, 175402}, NULL) = 0
time([1052344534])                      = 1052344534
write(1, "17:55:34 ResLWP-0 just did a rvmlib_set_thread_data()\n\n", 55) = 55
gettimeofday({1052344534, 175530}, NULL) = 0
old_mmap(0x15121000, 98304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x15121000
gettimeofday({1052344534, 175958}, NULL) = 0
gettimeofday({1052344534, 175983}, NULL) = 0
gettimeofday({1052344534, 176007}, NULL) = 0
time([1052344534])                      = 1052344534
write(1, "17:55:34 ResLWP-1 just did a rvmlib_set_thread_data()\n\n", 55) = 55
gettimeofday({1052344534, 176135}, NULL) = 0
old_mmap(0x1513b000, 98304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x1513b000
gettimeofday({1052344534, 176558}, NULL) = 0
gettimeofday({1052344534, 176583}, NULL) = 0
gettimeofday({1052344534, 176607}, NULL) = 0
gettimeofday({1052344534, 176654}, NULL) = 0
readlink("/proc/self/exe", "/usr/local/sbin/codasrv", 4095) = 23
brk(0x8164000)                          = 0x8164000
brk(0x8166000)                          = 0x8166000
time([1052344534])                      = 1052344534
getpid()                                = 891
rt_sigaction(SIGPIPE, {0x401f3650, [], 0x4000000}, {SIG_DFL}, 8) = 0
socket(PF_UNIX, SOCK_DGRAM, 0)          = 9
fcntl64(9, F_SETFD, FD_CLOEXEC)         = 0
connect(9, {sin_family=AF_UNIX, path="/dev/log"}, 16) = 0
send(9, "<82>May  7 17:55:34 libsafe.so[891]: 2.0.12", 43, 0) = 43
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
time([1052344534])                      = 1052344534
getpid()                                = 891
rt_sigaction(SIGPIPE, {0x401f3650, [], 0x4000000}, {SIG_DFL}, 8) = 0
send(9, "<82>May  7 17:55:34 libsafe.so[891]: Detected an attempt to write across stack boundary.", 88, 0) = 88
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
time([1052344534])                      = 1052344534
getpid()                                = 891
rt_sigaction(SIGPIPE, {0x401f3650, [], 0x4000000}, {SIG_DFL}, 8) = 0
send(9, "<82>May  7 17:55:34 libsafe.so[891]: Terminating /usr/local/sbin/codasrv.", 73, 0) = 73
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
getpid()                                = 891
geteuid32()                             = 0
getuid32()                              = 0
time([1052344534])                      = 1052344534
getpid()                                = 891
rt_sigaction(SIGPIPE, {0x401f3650, [], 0x4000000}, {SIG_DFL}, 8) = 0
send(9, "<82>May  7 17:55:34 libsafe.so[891]:     uid=0  euid=0  pid=891", 63, 0) = 63
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
time([1052344534])                      = 1052344534
getpid()                                = 891
rt_sigaction(SIGPIPE, {0x401f3650, [], 0x4000000}, {SIG_DFL}, 8) = 0
send(9, "<82>May  7 17:55:34 libsafe.so[891]: Call stack:\n", 49, 0) = 49
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
time([1052344534])                      = 1052344534
getpid()                                = 891
rt_sigaction(SIGPIPE, {0x401f3650, [], 0x4000000}, {SIG_DFL}, 8) = 0
send(9, "<82>May  7 17:55:34 libsafe.so[891]:     0x40017534\n", 52, 0) = 52
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
time([1052344534])                      = 1052344534
getpid()                                = 891
rt_sigaction(SIGPIPE, {0x401f3650, [], 0x4000000}, {SIG_DFL}, 8) = 0
send(9, "<82>May  7 17:55:34 libsafe.so[891]:     0x400181da\n", 52, 0) = 52
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
time([1052344534])                      = 1052344534
getpid()                                = 891
rt_sigaction(SIGPIPE, {0x401f3650, [], 0x4000000}, {SIG_DFL}, 8) = 0
send(9, "<82>May  7 17:55:34 libsafe.so[891]:     0x804cb9f\n", 51, 0) = 51
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
time([1052344534])                      = 1052344534
getpid()                                = 891
rt_sigaction(SIGPIPE, {0x401f3650, [], 0x4000000}, {SIG_DFL}, 8) = 0
send(9, "<82>May  7 17:55:34 libsafe.so[891]:     0x4012ebaf\n", 52, 0) = 52
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
time([1052344534])                      = 1052344534
getpid()                                = 891
rt_sigaction(SIGPIPE, {0x401f3650, [], 0x4000000}, {SIG_DFL}, 8) = 0
send(9, "<82>May  7 17:55:34 libsafe.so[891]: overflow caused by sprintf()", 65, 0) = 65
rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
fstat64(2, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40027000
getpid()                                = 891
geteuid32()                             = 0
getuid32()                              = 0
getpid()                                = 891
kill(891, SIGKILL)                      = 0
+++ killed by SIGKILL +++

I set everything up with vice-setup, and AFAIK am not doing anything
unusual.  This is the libsafe.so message (cat log|tail -n100|grep
'send(9'|cut -d: -f-|cut -d\" -f1):
 2.0.12
 Detected an attempt to write across stack boundary.
 Terminating /usr/local/sbin/codasrv.
     uid=0  euid=0  pid=891
 Call stack:
     0x40017534
     0x400181da
     0x804cb9f
     0x4012ebaf
 overflow caused by sprintf()

Hopping into gdb...

(gdb) list *0x804cb9f
0x804cb9f is in main (srv.cc:565).
560         sprintf(sname, "ResCheckSrvrLWP");
...

Opening up coda-5.3.20/coda-srv/vice/srv.cc ...
Line 333: char sname[20];

BUT... the string is only 16 bytes including \0!!! Is my glibc problematic
with Coda or some such?

Should this be happening?  Should I just disable libsafe or something?
Did I find a bug? =)  Or... Did I just set something up wrong?

I compiled my own, btw.  Running Slackware 8.1.01-stable Linux, patched a
few times.

# uname -a
Linux erinaceous 2.4.10 #3 Fri Nov 8 16:18:52 EST 2002 i686 unknown.

I have libc6/glibc2.3.1.

Any help is appreciated! =)

--os (the orange squid)
a.k.a. Matt Williams
os_at_udel.edu os_at_os.us.eu.org
Vote Cthulhu, not Bush!
http://www.cthulhu.org/
Be sure to check out Madonna's
latest new single, "WTF Do
You Think You're Doing?"
http://anti-dmca.org/mirror/
  irixx/madonna/wtf.mp3
Received on 2003-05-07 18:11:36