Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Jul 2012 10:36:45 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-current@freebsd.org
Cc:        "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>, current@freebsd.org
Subject:   Re: swp_pager_meta_build DoS printf
Message-ID:  <201207021036.45567.jhb@freebsd.org>
In-Reply-To: <7BEE3948-EE35-48C2-B4B1-25E34087A4C4@lists.zabbadoz.net>
References:  <7BEE3948-EE35-48C2-B4B1-25E34087A4C4@lists.zabbadoz.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday, July 01, 2012 8:23:31 am Bjoern A. Zeeb wrote:
> Hey,
> 
> hitting this printf in swp_pager_meta_build()
> 
>                         if (uma_zone_exhausted(swap_zone)) {
>                                 printf("swap zone exhausted, increase kern.maxswzone\n");
>                                 vm_pageout_oom(VM_OOM_SWAPZ);
>                                 pause("swzonex", 10);
>                         } else
> 
> seems to be an effective way to put the machine into a state of no recovery
> unless the memory situation would be able to clear itself.  Not that it wouldn't
> otherwise be any better but in addition having a couple of tenthousands of these
> going to console as well is really not helpful to try to do anything either.  Can
> we make it a log() call or something?
> 
> /bz
> 
> PS: I am not sure as I have seen it on someone else's machines and it's
> probably been ZFS that caused it.  I unfortunately neither had a way to
> get back in or break to a kernel debugger, so information is sparse.

This used to be a silent deadlock before I added the printf() and the call to
OOM. :-P  Do you just want to ratelimit the printf?  We have an API to ratelimit
printf's already.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201207021036.45567.jhb>