Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 May 1999 21:42:41 -0700 (PDT)
From:      aheffner@lakefield.net
To:        freebsd-gnats-submit@freebsd.org
Subject:   kern/11795: unload in boot loader can panic when using splash_bmp
Message-ID:  <19990520044241.6688014D1A@hub.freebsd.org>

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

>Number:         11795
>Category:       kern
>Synopsis:       unload in boot loader can panic when using splash_bmp
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed May 19 21:50:00 PDT 1999
>Closed-Date:
>Last-Modified:
>Originator:     Mike Heffner
>Release:        3.2-STABLE
>Organization:
>Environment:
FreeBSD enterprise.muriel.penguinpowered.com 3.2-BETA FreeBSD 3.2-BETA #0: Tue May 18 17:34:49 CDT 1999     spock@enterprise.muriel.penguinpowered.com:/usr/src/sys/compile/COOLWHIP  i386
>Description:
When using splash screens, loading the raw module object code splash_image_data with the file name of the splash screen image, should set the module name (m_name) to that of the image file name. It does within the scope of command_load(), but when leaving this function, the value is lost. When you attempt to unload modules, it will panic while trying to free() the name (mp->m_name) of the splash_image_data module. This panic occurs in mod_discard(). The system will immediately reboot.
>How-To-Repeat:
Use splash_image_data along with splash_bmp modules, and drop to 
the command prompt. Enter 'unload' to unload the modules. You should get:
panic: free: guard1 fail @ 0x----- < some memory address
you can also tell if it will fail when you check dmesg:
Preloaded splash_image_data " " at 0xc032709c.
should be:
Preloaded splash_image_data "/path/to/splash.bmp" at 0xc032709c.
>Fix:
This might not be the _best_ fix, but it works:
You need to change /usr/src/sys/boot/common/module.c
with this diff:
$ diff module.c.fixed module.c
267c267
<     mp->m_name = strdup(name);
---
>     mp->m_name = name;

and then recompile the /usr/src/boot sources.

>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?19990520044241.6688014D1A>