I extracted this patch from the mail (attached) and tried it with todays CVS but have a problem whereby squid now accepts the connection but just sits there, with no content being served up.
Backtrace attached from gdb, does this help?
Program received signal SIGINT, Interrupt.
[Switching to Thread 1073783552 (LWP 14837)]
0x08123146 in epoll_wait (epfd=5, pevents=0x82c1f40, maxevents=128,
timeout=1000) at src/epoll.c:32
32 __sys_epoll_wait(epfd, pevents, maxevents, timeout)
Current language: auto; currently c
(gdb) bt full
#0 0x08123146 in epoll_wait (epfd=5, pevents=0x82c1f40, maxevents=128,
timeout=1000) at src/epoll.c:32
__res = 0
#1 0x08098d8a in comm_select (msec=1000) at comm_epoll.cc:189
num = 0
i = 1
fd = 22
F = (fde *) 0x82b87c8
hdl = (PF *) 0x1d
cevents = (epoll_event *) 0x82b36c8
last_timeout = 1068286510
#2 0x080c5bec in main (argc=4, argv=0xbffffa84) at main.cc:1142
loop_delay = 1000
errcount = 0
n = 1255030816
oldmask = 18
(gdb) info locals
__res = 0
(gdb)Also, here's some output from squid -k debug
2003/11/08 23:18:50.996| comm_calliocallback: (nil)
2003/11/08 23:18:50.996| comm_iocallbackpending: (nil)
2003/11/08 23:18:50.996| comm_select(): got fd=22 events=1 monitoring=19 F->read_handler=0x80f5332 F->write_handler=(nil)
2003/11/08 23:18:50.996| comm_select(): Calling read handler on fd=22
2003/11/08 23:18:50.996| wccpHandleUdp: Called.
2003/11/08 23:18:50.996| commSetSelect(fd=22,type=1,handler=0x80f5332,client_data=(nil),timeout=0)
2003/11/08 23:18:50.996| wccpHandleUdp: 64 bytes WCCP pkt from 192.168.0.1: type=8, version=4, change=57, id=29669, number=1
2003/11/08 23:18:50.996| eventRun: RUN ID 3653
2003/11/08 23:18:50.996| eventRun: Running 'fqdncache_purgelru', id 3639
2003/11/08 23:18:50.996| eventAdd: Adding 'fqdncache_purgelru', in 10.000000 seconds
2003/11/08 23:18:50.996| fqdncache_purgelru: removed 0 entries
2003/11/08 23:18:50.997| comm_calliocallback: (nil)
2003/11/08 23:18:50.997| comm_iocallbackpending: (nil)
2003/11/08 23:18:50.997| eventRun: RUN ID 3654
2003/11/08 23:18:50.997| eventRun: Running 'ipcache_purgelru', id 3640
2003/11/08 23:18:50.997| eventAdd: Adding 'ipcache_purgelru', in 10.000000 seconds
2003/11/08 23:18:50.997| ipcache_purgelru: removed 0 entries
2003/11/08 23:18:50.997| comm_calliocallback: (nil)
2003/11/08 23:18:50.997| comm_iocallbackpending: (nil)
2003/11/08 23:18:50.999| comm_calliocallback: (nil)
2003/11/08 23:18:50.999| comm_iocallbackpending: (nil)
2003/11/08 23:18:50.999| comm_calliocallback: (nil)
2003/11/08 23:18:50.999| comm_iocallbackpending: (nil)
2003/11/08 23:18:50.999| comm_calliocallback: (nil)
Reverting the patch and squid works fine again.
Thanks, Reuben
At 05:36 a.m. 8/11/2003, David Nicklay wrote:
Hi,
oops. Forgot to post the attachment. Here goes.
Henrik Nordstrom wrote:Can we please have the patch clean again.. (preferably as a MIME
attachment). I don't seem to have the original message left in my
archives, and trying to recover the patch from the inline discussion is a
bit cumbersome due to linewraps and other destructive email formatting effects..
Regards
Henrik
On Thu, 6 Nov 2003, David Nicklay wrote:
Hi,
I finally took some time to test this. Gonzalo's patch seems to address a lot of outstanding issues with comm_epoll including:
- CPU usage problem w/ idle clients (both local and remote) - epoll kernel table being out of sync with fde table - missed epoll table updates (happens on my boxes but not Gonzalo's)
Could someone apply this to the squid-3.0 HEAD?
Kudos to Gonzalo.
epoll-fix.patch
Description: Binary data
