[squid-users] Assert(call->dialer.handler == callback)

Christos Tsantilas christos at chtsanti.net
Tue May 5 09:45:10 UTC 2015


Hi Steve,
  We have similar crashes.

I created a new bug report in squid bugzilla (I did not found any other 
similar report), using your stack trace:
   http://bugs.squid-cache.org/show_bug.cgi?id=4238

Also I attached a patch here, which probably fixes this problem. Can you 
please test it?

Regards,
    Christos


On 04/30/2015 07:14 PM, Steve Hill wrote:
>
> I've just migrated a system from Squid 3.4.10 to 3.5.3 and I'm getting
> frequent crashes with an assertion of "call->dialer.handler == callback"
> in Read.cc:comm_read_cancel().
>
> call->dialer.handler == (IOCB *) 0x7ffe1493b2d0
> <TunnelStateData::ReadClient(Comm::ConnectionPointer const&, char*,
> size_t, Comm::Flag, int, void*)>
>
> callback == <IdleConnList::Read(Comm::ConnectionPointer const&, char*,
> size_t, Comm::Flag, int, void*)>
>
>
> This is quite a busy system doing server-first ssl_bump and I get a lot
> of SSL negotiation errors in cache.log (these were present under 3.4.10
> too).  I think a good chunk of these are Team Viewer, which abuses
> CONNECTs to port 443 of remote servers to do non-SSL traffic, so
> obviously isn't going to work with ssl_bump.  I _suspect_ that the
> assertion may be being triggered by these SSL errors (e.g. connection
> being unexpectedly torn down because SSL negotiation failed?), but I
> can't easily prove that.
>
> I don't quite understand the comm_read_cancel() function though - as far
> as I can see, the callback parameter is only used in the assert() - is
> that correct?
>
>
> Stack trace:
> #0  0x00007ffe1155d625 in raise (sig=6) at
> ../nptl/sysdeps/unix/sysv/linux/raise.c:64
> #1  0x00007ffe1155ee05 in abort () at abort.c:92
> #2  0x00007ffe148210df in xassert (msg=Unhandled dwarf expression opcode
> 0xf3
> ) at debug.cc:544
> #3  0x00007ffe14a62787 in comm_read_cancel (fd=600,
> callback=0x7ffe148c8dd0 <IdleConnList::Read(Comm::ConnectionPointer
> const&, char*, size_t, Comm::Flag, int, void*)>,
>      data=0x7ffe176c8298) at Read.cc:204
> #4  0x00007ffe148c5e62 in IdleConnList::clearHandlers
> (this=0x7ffe176c8298, conn=...) at pconn.cc:157
> #5  0x00007ffe148c94ab in IdleConnList::findUseable
> (this=0x7ffe176c8298, key=...) at pconn.cc:269
> #6  0x00007ffe148c979d in PconnPool::pop (this=0x7ffe145db010, dest=...,
> domain=Unhandled dwarf expression opcode 0xf3
> ) at pconn.cc:449
> #7  0x00007ffe14852142 in FwdState::pconnPop (this=Unhandled dwarf
> expression opcode 0xf3
> ) at FwdState.cc:1153
> #8  0x00007ffe14855605 in FwdState::connectStart (this=0x7ffe2034c4e8)
> at FwdState.cc:850
> #9  0x00007ffe14856a31 in FwdState::startConnectionOrFail
> (this=0x7ffe2034c4e8) at FwdState.cc:398
> #10 0x00007ffe148d2fa5 in peerSelectDnsPaths (psstate=0x7ffe1fd0c028) at
> peer_select.cc:302
> #11 0x00007ffe148d6a1d in peerSelectDnsResults (ia=0x7ffe14f0ac20,
> details=Unhandled dwarf expression opcode 0xf3
> ) at peer_select.cc:383
> #12 0x00007ffe148a8e71 in ipcache_nbgethostbyname (name=Unhandled dwarf
> expression opcode 0xf3
> ) at ipcache.cc:518
> #13 0x00007ffe148d23c1 in peerSelectDnsPaths (psstate=0x7ffe1fd0c028) at
> peer_select.cc:259
> #14 0x00007ffe148d6a1d in peerSelectDnsResults (ia=0x7ffe14f0ac20,
> details=Unhandled dwarf expression opcode 0xf3
> ) at peer_select.cc:383
> #15 0x00007ffe148a8e71 in ipcache_nbgethostbyname (name=Unhandled dwarf
> expression opcode 0xf3
> ) at ipcache.cc:518
> #16 0x00007ffe148d23c1 in peerSelectDnsPaths (psstate=0x7ffe1fd0c028) at
> peer_select.cc:259
> #17 0x00007ffe148d382b in peerSelectFoo (ps=0x7ffe1fd0c028) at
> peer_select.cc:522
> #18 0x00007ffe149bba6a in ACLChecklist::checkCallback
> (this=0x7ffe2065b9e8, answer=...) at Checklist.cc:167
> #19 0x00007ffe148d3f5a in peerSelectFoo (ps=0x7ffe1fd0c028) at
> peer_select.cc:459
> #20 0x00007ffe148d5176 in peerSelect (paths=0x7ffe2034c540,
> request=0x7ffe1b660b70, al=Unhandled dwarf expression opcode 0xf3
> ) at peer_select.cc:163
> #21 0x00007ffe14852ae3 in FwdState::Start (clientConn=...,
> entry=0x7ffe1b0da790, request=0x7ffe1b660b70, al=...) at FwdState.cc:366
> #22 0x00007ffe14801401 in clientReplyContext::processMiss
> (this=0x7ffe1fcf5838) at client_side_reply.cc:691
> #23 0x00007ffe14801eb0 in clientReplyContext::doGetMoreData
> (this=0x7ffe1fcf5838) at client_side_reply.cc:1797
> #24 0x00007ffe14805a89 in ClientHttpRequest::httpStart
> (this=0x7ffe1dcda618) at client_side_request.cc:1518
> #25 0x00007ffe14808cac in ClientHttpRequest::processRequest
> (this=0x7ffe1dcda618) at client_side_request.cc:1504
> #26 0x00007ffe14809013 in ClientHttpRequest::doCallouts
> (this=0x7ffe1dcda618) at client_side_request.cc:1830
> #27 0x00007ffe1480b453 in checkNoCacheDoneWrapper (answer=...,
> data=0x7ffe1e5db378) at client_side_request.cc:1400
> #28 0x00007ffe149bba6a in ACLChecklist::checkCallback
> (this=0x7ffe1c88b4a8, answer=...) at Checklist.cc:167
> #29 0x00007ffe1480b40a in ClientRequestContext::checkNoCache
> (this=0x7ffe1e5db378) at client_side_request.cc:1385
> #30 0x00007ffe14809c04 in ClientHttpRequest::doCallouts
> (this=0x7ffe1dcda618) at client_side_request.cc:1748
> #31 0x00007ffe1480d109 in ClientRequestContext::clientAccessCheckDone
> (this=0x7ffe1e5db378, answer=Unhandled dwarf expression opcode 0xf3
> ) at client_side_request.cc:821
> #32 0x00007ffe1480d898 in ClientRequestContext::clientAccessCheck2
> (this=0x7ffe1e5db378) at client_side_request.cc:718
> #33 0x00007ffe14809767 in ClientHttpRequest::doCallouts
> (this=0x7ffe1dcda618) at client_side_request.cc:1721
> #34 0x00007ffe1480afca in ClientHttpRequest::handleAdaptedHeader
> (this=0x7ffe1dcda618, msg=Unhandled dwarf expression opcode 0xf3
> ) at client_side_request.cc:1935
> #35 0x00007ffe14abbcaa in JobDialer<Adaptation::Initiator>::dial
> (this=0x7ffe1ce04990, call=...) at ../../src/base/AsyncJobCalls.h:174
> #36 0x00007ffe149bea69 in AsyncCall::make (this=0x7ffe1ce04960) at
> AsyncCall.cc:40
> #37 0x00007ffe149c272f in AsyncCallQueue::fireNext (this=Unhandled dwarf
> expression opcode 0xf3
> ) at AsyncCallQueue.cc:56
> #38 0x00007ffe149c2a60 in AsyncCallQueue::fire (this=0x7ffe16f70bf0) at
> AsyncCallQueue.cc:42
> #39 0x00007ffe1484110c in EventLoop::runOnce (this=0x7fffcb8c4be0) at
> EventLoop.cc:120
> #40 0x00007ffe148412c8 in EventLoop::run (this=0x7fffcb8c4be0) at
> EventLoop.cc:82
> #41 0x00007ffe148ae191 in SquidMain (argc=Unhandled dwarf expression
> opcode 0xf3
> ) at main.cc:1511
> #42 0x00007ffe148af2e9 in SquidMainSafe (argc=Unhandled dwarf expression
> opcode 0xf3
> ) at main.cc:1243
> #43 main (argc=Unhandled dwarf expression opcode 0xf3
> ) at main.cc:1236
>
> (sorry about the DWARF errors - it looks like I've got a version
> mismatch between gcc and gdb)


More information about the squid-users mailing list