tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Subtle NFS incompatibility with SunOS 4.1.1 on 68K



On Mar 17, 2020, at 3:29 PM, Jason Thorpe <thorpej%me.com@localhost> wrote:
> 
> 
> From that post, the failed case (fd 4 is what we care about):
> 
> open ("/tmp/as68XXa00533", 0, 0666) = 5
> ioctl (5, 0x40125401, 0xdfffdd4) = -1 ENOTTY (Inappropriate ioctl for
> device)
> fstat (5, 0xdfffe08) = 0
> brk (0x894d4) = 0
> read (5, "".., 32768) = 84
> lseek (5, 0, 1) = 84
> lseek (5, 132, 0) = 132
> lseek (4, 152, 0) = 152
> write (4, "".., 154) = 154
> lseek (4, 268, 0) = 268
> write (4, "".., 4) = 4
> lseek (4, 0, 0) = 0
> write (4, "", -32768) = -1 EINVAL (Invalid argument)   <------ WTF??
> write (2, "as: Assembler Error-- ", 22) = as: Assembler Error-- 22
> write (2, "write error on file bla.o", 25) = write error on file bla.o25
> 
> Does this happen for you, as well?  (Can you run "trace" on the Sun 3?)

Yes, here's the complete trace, same command line for maximum possible equivalence:

ferrari% trace as -o bla.o bla.s
open ("/usr/lib/ld.so", 0, 021044) = 3
read (3, "".., 32) = 32
mmap (0, 139264, 0x5, 0x80000002, 3, 0) = 0xdddc000
mmap (0xddfc000, 8192, 0x7, 0x80000012, 3, 24576) = 0xddfc000
munmap (0xdde2000, 106496) = 0
open ("/dev/zero", 0, 021152) = 4
getrlimit (3, 0xdfffdd8) = 0
mmap (0xde00000, 8192, 0x3, 0x80000012, 4, 0) = 0xde00000
close (3) = 0
getuid () = 1000
getgid () = 100
open ("/etc/ld.so.cache", 0, 01570000140) = 3
fstat (3, 0xdfffd48) = 0
mmap (0, 8192, 0x1, 0x80000001, 3, 0) = 0xddf8000
close (3) = 0
open ("/usr/lib/libc.so.0.15.2", 0, 01567347332) = 3
read (3, "".., 32) = 32
mmap (0, 409600, 0x5, 0x80000002, 3, 0) = 0xdd76000
mmap (0xddd6000, 16384, 0x7, 0x80000012, 3, 385024) = 0xddd6000
close (3) = 0
open ("/usr/lib/libdl.so.1.0", 0, 01567347162) = 3
read (3, "".., 32) = 32
mmap (0, 139264, 0x5, 0x80000002, 3, 0) = 0xdd52000
mmap (0xdd72000, 8192, 0x7, 0x80000012, 3, 8192) = 0xdd72000
close (3) = 0
close (4) = 0
sigblock (0x2) = 0
sigvec (2, 0xdfffe94, 0xdfffe88) = 0
sigvec (2, 0xdfffe58, 0) = 0
sigsetmask (0) = 0x2
open ("bla.s", 0, 0666) = 3
open ("bla.o", 03001, 0666) = 4
close (4) = 0
getpagesize () = 8192
brk (0x474d4) = 0
brk (0x494d4) = 0
brk (0x4d4d4) = 0
ioctl (3, 0x40125401, 0xdfffd98) = -1 ENOTTY (Inappropriate ioctl for device)
fstat (3, 0xdfffdcc) = 0
brk (0x5f4d4) = 0
read (3, "", 65536) = 0
lseek (3, 0, 0) = 0
open ("bla.o", 03001, 0666) = 4
fstat (4, 0xdfffe54) = 0
getpid () = 445
stat ("/tmp/as68XXa00445", 0xdfffe54) = -1 ENOENT (No such file or directory)
open ("/tmp/as68XXa00445", 03001, 0666) = 5
open ("/tmp/as68XXa00445", 01001, 0666) = 6
lseek (6, 0, 2) = 0
lseek (6, 0, 0) = 0
brk (0x714d4) = 0
brk (0x834d4) = 0
brk (0x954d4) = 0
brk (0xa74d4) = 0
read (3, "", 65536) = 0
close (5) = 0
close (6) = 0
open ("/tmp/as68XXa00445", 0, 0666) = 5
brk (0xb94d4) = 0
lseek (5, 0, 0) = 0
lseek (4, 32, 0) = 32
write (4, "", -32) = -1 EINVAL (Invalid argument)
write (2, "as: Assembler Error-- ", 22) = as: Assembler Error-- 22
write (2, "write error on file bla.o", 25) = write error on file bla.o25
close (0) = 0
close (1) = 0
close (2) = 0
close (3) = 0
close (4) = 0
close (5) = 0
exit (-1) = ?
ferrari% 

Looks like the same issue, my system consistently passes -32 to write(4, ...) rather than -32768 but otherwise it's the same.

> Can you get a tcpdump of the failure from the RPI?

I'll try! I'll have to figure out how, but I expect it should be straightforward, right?

  -- Chris




Home | Main Index | Thread Index | Old Index