Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Dec 1998 00:22:00 -0500 (EST)
From:      Jason Garman <jgarman@Glue.umd.edu>
To:        FreeBSD-gnats-submit@FreeBSD.ORG
Subject:   kern/9195: daemons die with sig11 due to VM problems
Message-ID:  <Pine.GSO.3.95q.981226002120.28317A-100000@y.glue.umd.edu>

next in thread | raw e-mail | index | archive | help

>Number:         9195
>Category:       kern
>Synopsis:       daemons die with sig11 due to VM problems
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:
>Keywords:
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Dec 25 21:30:01 PST 1998
>Last-Modified:
>Originator:     Jason Garman
>Organization:
individual
>Release:        FreeBSD 3.0-CURRENT i386
>Environment:

FreeBSD jason.garman.net 3.0-CURRENT FreeBSD 3.0-CURRENT #5: Wed Dec 23
22:01:40 EST 1998     root@jason.garman.net:/usr/src/sys/compile/JASON
i386

on a PII/300 with 96MB of real memory, 150MB of swap

>Description:

When a "significant" amount of swap is used on this system ("significant" 
can be any number from 50% on up) then daemons that fork die with
sigsegv's due to null pointer accesses.  ie. it seems that particular
portions of the child processes' memory has been cleared. 

>How-To-Repeat:

Make the machine swap.  Try and get the daemon you want to segfault to
swap out of memory... then make it fork a few times.  It'll start
segfaulting.  It seems to correlate with the following message in syslog: 

swap_pager: suggest more swap space: 189 MB

yet my swap usage is only half.  Daemons which exhibit this behavior
include the Internet junkbuster (since it forks on every http connection),
samba, and secure shell.

A sample traceback from internet junkbuster follows:

bash$ gdb junkbuster junkbuster.core
....
Core was generated by `junkbuster'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/libexec/ld.so...done.
Reading symbols from /usr/lib/aout/libc.so.3.1...done.
#0  0x40e1 in block_url (http=0x26620, csp=0x26600) at filters.c:84
84                              if((b->url->domain[0] == '\0') ||
(domaincmp(b->
url, url) == 0)) {
(gdb) x b->url
0x23cc0 <end+65108>:    0x00000000
(gdb) <enter> (several times... until...)
0x23cfc <end+65168>:    0x00000000
(gdb) 
0x23d00 <end+65172>:    0x4e524157

>Fix:
        
The inetd "fix" simply appears to keep critical parts of inetd in memory
at all times.  This seems to prevent this problem from manifesting itself
in inetd but still affects any other daemon which forks.

So no fix is known for this problem.


>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.3.95q.981226002120.28317A-100000>