Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Mar 2004 16:01:23 -0800 (PST)
From:      Vitaly Markitantov <ua_vitaly@ukr.net>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   kern/64074: vm_swapout.c bug
Message-ID:  <200403110001.i2B01NFj075272@www.freebsd.org>
Resent-Message-ID: <200403110010.i2B0AC0d097698@freefall.freebsd.org>

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

>Number:         64074
>Category:       kern
>Synopsis:       vm_swapout.c bug
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Mar 10 16:10:12 PST 2004
>Closed-Date:
>Last-Modified:
>Originator:     Vitaly Markitantov
>Release:        FreeBSD-5_CURRENT
>Organization:
>Environment:
FreeBSD freedo.umc.com.ua 5.2-CURRENT-20040227-JPSNAP FreeBSD 5.2-CURRENT-20040227-JPSNAP #0: Mon Mar  1 11:11:15 EET 2004     vix@freedo.umc.com.ua:/raid/obj/raid/src/sys/DO  i386
>Description:
When unprivileged user starts lots of processes and they used all of  
swap space, then kernel kills not only processes of this user. 
Sometimes it kills even sshd started by root, so you can't anymore
connect to remote host.

My situation was (from dmesg):
swap_pager: out of swap space
swap_pager_getswapspace(16): failed
pid 446 (oracle), uid 100, was killed: out of swap space
swap_pager_getswapspace(16): failed
pid 450 (oracle), uid 100, was killed: out of swap space
pid 448 (oracle), uid 100, was killed: out of swap space
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
pid 525 (sshd), uid 0, was killed: out of swap space
pid 527 (sshd), uid 1001, was killed: out of swap space

      
>How-To-Repeat:
Simple shell script can expose this problem

 #!/bin/sh
 export M=`expr ${M:-0} + 1`
 echo check $M
 JUNK=`cat /boot/kernel/kernel` # this is needed to get more memory 
 $0

Script recursively launches himself, and when swap space is out, kernel
begins to kill processes.

>Fix:
      
>Release-Note:
>Audit-Trail:
>Unformatted:



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