i386/84556: GBDE-encrypted swap causes panic at shutdown

Paul Mather paul at gromit.dlib.vt.edu
Thu Aug 4 17:30:24 GMT 2005


>Number:         84556
>Category:       i386
>Synopsis:       GBDE-encrypted swap causes panic at shutdown
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-i386
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Aug 04 17:30:23 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Paul Mather
>Release:        FreeBSD 6.0-CURRENT i386
>Organization:
>Environment:
System: FreeBSD zappa.Chelsea-Ct.Org 6.0-CURRENT FreeBSD 6.0-CURRENT #0: Wed Jun 29 02:22:09 EDT 2005 paul at zappa.Chelsea-Ct.Org:/usr/obj/usr/src/sys/ZAPPA i386


	
>Description:

A kernel panic at shutdown is possible if a GBDE-encrypted swap
partition is in use (i.e., swapinfo shows pages used under the "Used"
column).  I don't know if a minimum percentage of swap needs to be in
use to provoke the panic.  I have /tmp mounted as a md-backed
filesystem on GBDE-encrypted swap, so usually I have at least a couple
of tens of megabytes of swap used by the time I shutdown.  In my case,
I always get a panic (unless no swapping has occurred).

Here is the panic I got when I last did a shutdown on my system:

[[...]]
All buffers synced.
unmount of /dev failed (BUSY)
Uptime: 8d5h26m53s
GEOM_MIRROR: Device raid1: provider mirror/raid1 destroyed.
GEOM_MIRROR: Device raid1 destroyed.
kernel trap 12 with interrupts disabled


Fatal trap 12: page fault while in kernel mode
fault virtual address   = 0x74
fault code              = supervisor read, page not present
instruction pointer     = 0x20:0xc04eed94
stack pointer           = 0x28:0xd56c2c5c
frame pointer           = 0x28:0xd56c2c60
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1
processor eflags        = resume, IOPL = 0
current process         = 79 (g_bde mirror/raid1b)
[thread pid 79 tid 100042 ]
Stopped at      turnstile_setowner+0xb: movl    0x74(%edx),%eax
db> where
Tracing pid 79 tid 100042 td 0xc1a2f480
turnstile_setowner(ad89d,c06601a0,0,c1bab02c,c1bab02c) at turnstile_setowner+0xb

turnstile_wait(c1bab02c,0,23,c1a2f480,d56c2cd0) at turnstile_wait+0xb9
_mtx_lock_sleep(c1bab02c,c1a2f480,0,0,0) at _mtx_lock_sleep+0x87
msleep(c1bab000,c1bab02c,4c,c0608dee,3e8,1,c0609225) at msleep+0x380
g_bde_worker(c1be4b00,d56c2d38,c1be4b00,c1be4b00,c04947a0) at g_bde_worker+0x299

fork_exit(c04947a0,c1be4b00,d56c2d38) at fork_exit+0x6b
fork_trampoline() at fork_trampoline+0x8
--- trap 0x1, eip = 0, esp = 0xd56c2d6c, ebp = 0 ---
db>



I have marked this PR as "serious" only because it prevents a remote
shutdown/reboot from succeeding.

>How-To-Repeat:

Enable GBDE-encrypted swap (e.g. add 'gbde_swap_enable="YES"' to
/etc/rc.conf) and do a lot of swapping; then execute "shutdown -r now".

>Fix:

	


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


More information about the freebsd-i386 mailing list