From: <don...@is...> - 2005-10-06 17:06:23
|
I got a lot of these in an earlier build but then the problem seemed to go away. Now it reappears after I've been running this program for several days, reading every packet that arrives on this machine. *** - Unix error 14 (EFAULT): Bad address The following restarts are available: SKIP :R1 skip (MONITOR TESTFN 'TEST2) STOP :R2 stop loading file ... ABORT :R3 ABORT Break 1 [2]> where <1> #<ADD-ON-SYSTEM-FUNCTION RAWSOCK:RECVFROM> EVAL frame for form (RAWSOCK:RECVFROM DEFAULT-SOCKET DEFAULT-BUFFER DEFAULT-DEVICE) Break 1 [2]> DEFAULT-SOCKET 6 Break 1 [2]> DEFAULT-DEVICE #<RAWSOCK:SOCKADDR :%DATA #(1 0 101 116 104 48 0 0 0 0 0 0 0 0 0 0 8 6 0 0 0 0)> Break 1 [2]> DEFAULT-BUFFER #(255 255 255 255 255 255 0 9 123 143 140 84 8 6 0 1 8 0 6 4 0 1 0 9 ... man recvfrom says EFAULT = The receive buffer pointer(s) point outside the process address space. Previous experience was that redo would sometimes work, sometimes not, resetting default-device before redo did work. I also got some small info from # strace -p 26623 -e trace=network -t -v Process 26623 attached - interrupt to quit 08:36:32 recvfrom(6, 0x20e0005c, 1518, 0, 0x20e07aa4, 0xbfb0c7e4) = -1 EFAULT (Bad address) BTW, the original values came from (defvar default-socket (rawsock:socket :inet :packet #+ignore :all #x300)) (defvar default-device (rawsock:make-sockaddr :packet 20)) (defvar default-buffer (make-array 1518 :element-type '(unsigned-byte 8) :fill-pointer 1518)) I hope it's obvious to you what the problem is. |