errors/oopses when turning off a swap file

Lennart Buytenhek (buytenh@scotty.dsv.nl)
Wed, 26 May 1999 10:34:00 +0200


Hi all!

I've had some problems while turning off one of my swap files when
running a rather heavily swapping computation. I dont know whether
it's reproducable. Down below is an excerpt of my syslog and some
additional info. Anyone ideas on what this is, patches for {making it
go away,doing additional error reporting} or hints on what I should
watch for?

I know for sure that I'm not running out of swap because I'm turning a
swap file off. It's probably got something to do with emptying the
swap file or something, but I'm not very deep into the MM/VM stuff, so I
can only guess.

Is this a bug? Is this 'bug' known? Or shouldn't I be turning off a
part of my swap while swapping?

Thanks in advance

Lennert Buytenhek
<buytenh@dsv.nl>

(I don't read this list (other than through kt.opensrc.org), so please
CC me. And dont expect a real quick response. A week might be like it.)

data:
- uniprocessor PPro 200 with 32 mb
- kernel is 2.2.7/2.2.9/2.3.2-devfs (rgooch's /dev fs patches)
- gcc is 2.7.2.3 (egcs 1.1.2 with or without -march=pentiumpro,
-mcpu=pentiumpro does the same thing)
- tries_base is 1024, tries_min is 32, swap_cluster is 512
- three swap files:
- /swap 16 megs
- /swap2 16 megs
- /dosc/swap 64 megs, on a DOS (fat16) partition on a separate disk
- average swap usage is ~25megs
- running 'dyntree', a computation with a working set which grows to
~50 megs after a minute or 5 (it's a dynamic algorithm
for computing an optimal binary search tree for a few
thousand nodes. but I think any heavy stuff will do)

I just wanted to give my box a hard time, I don't _need_ this
computation for anything.

Here are a few problem scenarios:

2.2.7
=====
VC2:
[root@indigo vm]# /sbin/swapon /swap
[root@indigo vm]# /sbin/swapon /swap2
[root@indigo vm]# /sbin/swapon /dosc/swap

VC1:
[lbuyten@indigo vm]# ./dyntree &

VC2:
[root@indigo vm]# /sbin/swapoff /swap
[root@indigo vm]# /sbin/swapoff /swap2
[root@indigo vm]# /sbin/swapoff /dosc/swap
[root@indigo vm]# /sbin/swapon /swap -> Oops
[root@indigo vm]# /sbin/swapon /swap2 -> Oops
[root@indigo vm]# /sbin/swapon /dosc/swap -> No problem

[root@indigo vm]# cat /proc/swaps -> Oops

2.3.2-devfs (somewhat more detailed, horror follows)
===========

VC1:
[lbuyten@indigo tree]# ./dyntree &

VC2:
[root@indigo vm]# cat kswapd
1024 32 512

[root@indigo vm]# /sbin/swapoff /swap
try_to_unuse: entry 00034104 count=1
rw_swap_page: Trying to read unallocated swap (00034104)
swap_count at 34104: entry 00034104, unused page!
swap_free: swap-space map bad (entry 00034104)

[root@indigo vm]# /sbin/swapoff /swap2
try_to_unuse: entry 00029202 count=1
rw_swap_page: Trying to read unallocated swap (00029202)
swap_count at 29202: entry 00029202, unused page!
swap_free: swap-space map bad (entry 00029202)
try_to_unuse: entry 0002b602 count=1
rw_swap_page: Trying to read unallocated swap (0002b602)
swap_count at 2b602: entry 0002b602, unused page!
swap_free: swap-space map bad (entry 0002b602)

[root@indigo vm]# /sbin/swapon /swap
[root@indigo vm]# /sbin/swapon /swap2

[root@indigo vm]# /sbin/swapoff /dosc/swap
swap_duplicate at 6d302: entry 0006d302, unused page
swap_duplicate at 6d502: entry 0006d502, unused page
swap_duplicate at 6d802: entry 0006d802, unused page
swap_duplicate at 6d902: entry 0006d902, unused page
swap_duplicate at 6da02: entry 0006da02, unused page
swap_duplicate at 6dc02: entry 0006dc02, unused page
swap_duplicate at 6de02: entry 0006de02, unused page
swap_duplicate at 6df02: entry 0006df02, unused page
try_to_unuse: entry 00070102 count=1
rw_swap_page: Trying to read unallocated swap (00070102)
swap_count at 70102: entry 00070102, unused page!
swap_free: swap-space map bad (entry 00070102)

[root@indigo vm]# /sbin/swapon /dosc/swap

[root@indigo vm]# /sbin/swapoff /dosc/swap
try_to_unuse: entry 00048800 count=1
rw_swap_page: Trying to read unallocated swap (00048800)
swap_count at 48800: entry 00048800, unused page!
swap_free: swap-space map bad (entry 00048800)
try_to_unuse: entry 0005b000 count=1
rw_swap_page: Trying to read unallocated swap (0005b000)
swap_count at 5b000: entry 0005b000, unused page!
swap_free: swap-space map bad (entry 0005b000)
try_to_unuse: entry 0007f000 count=1
rw_swap_page: Trying to read unallocated swap (0007f000)
swap_count at 7f000: entry 0007f000, unused page!
swap_free: swap-space map bad (entry 0007f000)
try_to_unuse: entry 00082000 count=1
rw_swap_page: Trying to read unallocated swap (00082000)
swap_count at 82000: entry 00082000, unused page!
swap_free: swap-space map bad (entry 00082000)
try_to_unuse: entry 00084100 count=1
rw_swap_page: Trying to read unallocated swap (00084100)
swap_count at 84100: entry 00084100, unused page!
swap_free: swap-space map bad (entry 00084100)
try_to_unuse: entry 0008b000 count=1
rw_swap_page: Trying to read unallocated swap (0008b000)
swap_count at 8b000: entry 0008b000, unused page!
swap_free: swap-space map bad (entry 0008b000)

[root@indigo vm]# /sbin/swapon /dosc/swap
Unable to handle kernel NULL pointer dereference at virtual address 00000008
current->tss.cr3 = 011db000,
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c0124281>] <====== sys_swapon is at c0123fb4
EFLAGS: 00010202
eax: 00000000 ebx: c02d6ff4 ecx: 00000003 edx: 00000001
esi: c139f8e0 edi: c139f8e0 ebp: 00000000 esp: c0f59f20
ds: 0018 es: 0018 ss: 0018
Process swapon (pid: 1226, process nr: 31, stackpage=c0f59000)
Stack: 08048d29 bffffce0 c02d4364 c0094690 c18a4cc0 c011b504 c011b581 c00521ec
008e3025 c02d6ff4 fffffff0 c028d4a0 00000000 008e3025 00000000 00001000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Call Trace: [<c011b504>] [<c011b581>] [<c0109044>]
Code: 8b 40 08 39 47 08 0f 84 6b 04 00 00 42 39 ca 72 de 31 d2 b8

[root@indigo vm]# cat /proc/swaps
Unable to handle kernel NULL pointer dereference at virtual address 00000000
current->tss.cr3 = 011db000,
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c0123f40>] <====== get_swaparea_info is at c0123e80
EFLAGS: 00010297
eax: 00000001 ebx: 0000004a ecx: 00000000 edx: 00000000
esi: c084d000 edi: c02d6ff4 ebp: 00000000 esp: c0f59f24
ds: 0018 es: 0018 ss: 0018
Process cat (pid: 1229, process nr: 31, stackpage=c0f59000)
Stack: c02720dc 00000400 00000001 00000000 c084d000 c015210e c168c000 0000001d
c168c000 c015237e c168c000 0000001d c0f59f8c 00000000 00000400 c133b3e0
0804af10 0804af10 00000400 0000001d 00000001 c028fd60 00000000 c0f58000
Call Trace: [<c015210e>] [<c015237e>] [<c0125ab2>] [<c0109044>]
Code: 0f b7 44 55 00 85 c0 74 08 3d 00 80 00 00 74 01 41 42 39 54

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/