Date: Tue, 26 Nov 2002 20:00:13 -0600 (CST) From: Dan Nelson <dnelson@allantgroup.com> To: FreeBSD-gnats-submit@FreeBSD.org Cc: phk@FreeBSD.org Subject: kern/45777: crashdump issue with too-small dumpdev Message-ID: <200211270200.gAR20Dbk099944@dan.emsphone.com>
next in thread | raw e-mail | index | archive | help
>Number: 45777 >Category: kern >Synopsis: crashdump issue with too-small dumpdev >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Nov 26 18:10:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Dan Nelson >Release: FreeBSD 5.0-CURRENT i386 >Organization: The Allant Group >Environment: System: FreeBSD dan.emsphone.com 5.0-CURRENT FreeBSD 5.0-CURRENT #223: Sun Nov 24 14:13:14 CST 2002 dan@dan.emsphone.com:/usr/src/sys/i386/compile/DANSMP i386 >Description: I finally discovered why I have never been able to get crashdumps to work: at some point all error-checking in the dump routines disappeared. I happen to have 1 GB of RAM, and 640MB of swap (old system, and I never reformatted after adding RAM). dumpon lets me set the dump device to my teeny 640MB swap partition, and when it comes time to dump, dumpsys calculates dumplo = di->mediaoffset + di->mediasize - Maxmem * (off_t)PAGE_SIZE; which in my case ends up being a negative number. The dump ends up failing when it tries to write to a negative block number and the SCSI drive refuses the request. So it seems like there are three bugs here: 1 - /sbin/dumpon doesn't verify RAM size against raw device size. This may be forgivable, as neither is all that easy to calculate from userland. 2 - ioctl(DIOCSKERNELDUMP) lets me set my dump device to something smaller than maxmem. 3 - dumpsys doesn't range-check its calculations. I'm just lucky I don't have a 384MB root partition, or the first time I pancied I would have overwritten my root :) If at some point we are going to support sparse dumps (only dump kernel and say, wired pages, for example), then #1 and #2 sort of go away, since we don't know the size of the dump until we crash. But I don't want crash dumps leaking over to other partitions, no matter what. >How-To-Repeat: 1. Run dumpon on a partition smaller than your memory size 2. Panic 3. The partition just before your dumpon partition will have crashdump data in it, if the panic was able to write a dump at all. >Fix: >Release-Note: >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?200211270200.gAR20Dbk099944>