On 20/12/2013 5:30 a.m., Don Brearley wrote: > Hi Amos, > > > I applied your patch to 3.3.9 and recompiled/reinstalled. Same issue > persists. Here is your > requested information: > <snip> > > (gdb) backtrace > #0 0x0000000802cbe23c in thr_kill () from /lib/libc.so.7 > #1 0x0000000802d6263b in abort () from /lib/libc.so.7 > #2 0x0000000802d45d35 in __assert () from /lib/libc.so.7 > #3 0x00000000006805e7 in Ip::Address::GetSockAddr (this=0x7fffffffd8e0, > buf=@0x7fffffffd910) at Address.cc:966 > #4 0x0000000000#5 0x00000000006df030 in Comm::DoSelect (msec=) at > ModKqueue.cc:301 > #6 0x0000000000679c9d in CommSelectEngine::checkEvents (this=, > timeout=0) at comm.cc:2088 > #7 0x0000000000523ccc in EventLoop::checkEngine (this=0x7fffffffda70, > engine=0x7fffffffdaf0, primary=) at EventLoop.cc:52 > #8 0x0000000000523ee5 in EventLoop::runOnce (this=0x7fffffffda70) at > EventLoop.cc:126 > #9 0x00000000005240a8 in EventLoop::run (this=0x7fffffffda70) at > EventLoop.cc:96 > #10 0x0000000000598f53 in SquidMain (argc=2, argv=) at main.cc:1520 > #11 0x00000000005992b8 in SquidMainSafe (argc=, argv=) at main.cc:1242 > #12 0x00000000004b6941 in _start () > #13 0x00000008009cf000 in ?? () > #14 0x0000000000000000 in ?? () > > > (gdb) frame 4 > #4 0x0000000000604e8f in wccp2HandleUdp (sock=15, not_used=) at > wccp2.cc:1182 > 1182 from_tmp.GetSockAddr(from); > > > (gdb) print len > $1 = -1 > > > (gdb) print from > $2 = {sin_len = 255 '�', sin_family = 255 '�', sin_port = 65535, > sin_addr = {s_addr = 4294967295}, sin_zero = "��������"} > >
Aha!. Random crap being left in the sockaddr_in value on failed packet receives. If you move the if(len<0) check above the crashing line from_tmp.GetSockAddr(from) it should start working. I will have a patch for you in a few hrs when I get back to machines. Amos