pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/50995: sigsegv in recv()
On Mar 23, 5:10pm, prlw1%cam.ac.uk@localhost (prlw1%cam.ac.uk@localhost) wrote:
-- Subject: pkg/50995: sigsegv in recv()
| >Number: 50995
| >Category: pkg
| >Synopsis: sigsegv in recv()
| >Confidential: no
| >Severity: serious
| >Priority: high
| >Responsible: pkg-manager
| >State: open
| >Class: sw-bug
| >Submitter-Id: net
| >Arrival-Date: Wed Mar 23 17:10:00 +0000 2016
| >Originator: Patrick Welche
| >Release: NetBSD-7/amd64
| >Organization:
| >Environment:
| >Description:
| Running pkgsrc dansguardian 2.12.0.3nb4 on a busy NetBSD-7/amd64 (both
| original 7 kernel and most recent from 7 branch), dansguardian will run
| fine for say a fortnight, then run through a patch of coredumps as a
| result of a SIGSEGV. There is no apparent pattern. Could also coredump
| on startup.
|
| NetBSD-5/i386 does not exhibit the problem.
|
| http://www.netbsd.org/~sborrill/dansguardian/
|
| contains the patches that were added to dansguardian to try to see
| whether the issue was with the application or the recv() call.
| BaseSocket.cc is the patched source file. The syslog line is not
| reached. "dansguardian" is the 9.2M binary with symbols, dansguardian.core
| one of the 43M core files. core file says:
|
| Program terminated with signal SIGSEGV, Segmentation fault.
| #0 BaseSocket::readFromSocket (this=0x7f7f00000001,
| this@entry=0x7f7fffffd320, buff=buff@entry=0x7f7fffffd25e "",
| len=len@entry=1, flags=flags@entry=0, timeout=timeout@entry=360,
| check_first=check_first@entry=true,
| honour_reloadconfig=honour_reloadconfig@entry=true) at BaseSocket.cpp:476
|
| 476 rc = recv(sck, buff, cnt, flags);
|
| Conjecture: another manifestation of the recvfrom returns EAGAIN loop problem.
| >How-To-Repeat:
Well, in this case, this=0x7f7f00000001 does not seem right; for one, it should
be aligned. Now you are asking this->sck as the first argument of the recv()
call, and
22175 1 dansguardian PSIG SIGSEGV SIG_DFL: code=SEGV_MAPERR, addr=0x7f7f00000011, trap=6)
Which looks like it dereferencing it and dying before it gets a chance to call
recv(). I wonder what's corrupting memory. The socket is coming from the stack
so the address of "this" should look a lot like the others, but it looks like
it lost it's bottom 32 bits... Perhaps something overwrote that word on the
stack with a 0?
christos
Home |
Main Index |
Thread Index |
Old Index