Alrighty, I installed strace and after playing with it some, this is what I've got.
root@Navi:/media/card# strace -o smbd-strace smbd -i > smbd-stdout &
root@Navi:/media/card# (This is where I connect to the Z from my windows machine.)
[1] + Done strace -o smb-strace smbd -i 1>smbd-stdout
root@Navi:/media/card# _
Okay, so here's the last bit of the strace output ("smbd-strace") starting (I think) at about where smbd accepts the connection from the windows box. (Note the IP address of the windows machine is 172.16.0.12.):
listen(19, 50) = 0
pipe([20, 21]) = 0
fcntl64(20, F_GETFL) = 0 (flags O_RDONLY)
fcntl64(20, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
fcntl64(21, F_GETFL) = 0x1 (flags O_WRONLY)
fcntl64(21, F_SETFL, O_WRONLY|O_NONBLOCK) = 0
select(1024, [18 19 20], NULL, NULL, NULL) = 1 (in [18])
time(NULL) = 1142633523
accept(18, {sa_family=AF_INET, sin_port=htons(3830), sin_addr=inet_addr("172.16.0.12")}, [16]) = 22
fcntl64(22, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(22, F_SETFL, O_RDWR) = 0
--- SIGBUS (Bus error) @ 0 (0) ---
write(1, "================================"..., 64) = 64
write(1, "INTERNAL ERROR: Signal 7 in pid "..., 47) = 47
write(1, "Please read the appendix Bugs of"..., 60) = 60
write(1, "================================"..., 64) = 64
write(1, "PANIC: internal error\n", 22) = 22
write(1, "BACKTRACE: 2 stack frames:\n", 27) = 27
write(1, " #0 smbd(smb_panic2+0x6c) [0x164"..., 37) = 37
write(1, " #1 [(nil)]\n", 12) = 12
rt_sigaction(SIGABRT, {SIG_DFL}, {0x153e1c, [ABRT], SA_RESTART|0x4000000}, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
getpid() = 13409
kill(13409, SIGABRT) = 0
--- SIGABRT (Aborted) @ 0 (0) ---
+++ killed by SIGABRT +++
So, "fcntl64(22, F_SETFL, O_RDWR)" is the offending call?
And the contents of "smbd-stdout" is the same as the third example in my original post.
If that's not enough to see what's wrong, I've attached the entire output of strace (renamed w/ ".txt" so the forum would let me upload it).
(As an offtopic sidenote:) Strace is kinda cool. :-P Am I correct that a line like:
setsockopt(18, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
is a system call to the function "setsockopt", where the stuff in the parethesis are the arguments, and the stuff after the equalsign is the value setsockopt returned?
Yay, I'm learning.
Thanks,
v.