config(8) -x headscratcher

Wojciech A. Koszek wkoszek at freebsd.org
Sat Apr 27 19:06:02 UTC 2013


On Sat, Apr 27, 2013 at 06:54:11PM +0300, Kimmo Paasiala wrote:
> I'm getting a core dump on 'config -x /boot/kernel/kernel' on 9.1-RELEASE i386.
> 
> Assertion failed: (r != '\0' && ("Char present in the configuration "
> "string mustn't be equal to 0")), function kernconfdump, file
> /usr/src/usr.sbin/config/main.c, line 710.
> 
> I have double checked that my config file is sane and does not have
> any funny characters anywhere.
> 
> The system is i386 9.1-RELEASE r249856. The world and kernel are built
> with clang and I'm suspecting that the use of clang has something to
> do with this segfault.
> 
> Looking at the kernel files I can see one very obvious difference.
> This is the 'elfdump -c kernel | grep -A 8 kern_conf' output (what
> config -x seems to use for finding out the config file from the kernel
> image) for the GENERIC kernel from the stock installation:
> 
> 	sh_name: kern_conf
> 	sh_type: SHT_PROGBITS
> 	sh_flags: SHF_ALLOC
> 	sh_addr: 0xc1039f80
> 	sh_offset: 12820352
> 	sh_size: 3771
> 	sh_link: 0
> 	sh_info: 0
> 	sh_addralign: 32
> 
> And this is from the kernel I have built myself using clang and a
> custom config file:
> 
> 	sh_name: kern_conf
> 	sh_type: SHT_PROGBITS
> 	sh_flags: SHF_ALLOC
> 	sh_addr: 0xc09aee9c
> 	sh_offset: 5959324
> 	sh_size: 1994
> 	sh_link: 0
> 	sh_info: 0
> 	sh_addralign: 1
> 
> The align field looks suspicious, config -x seems to use it to check
> for padding but to me it looks like the logic may not work if the
> alignment is 1.
> 
> This the relevant bit from main.c of config(8)
> 

Kimmo,

Lets keep discussion on hackers@ only. I do agree with you that config(8)
internal implementation might have its issues.

Can you make your kernel configuration file, faulty kernel image and exact
build instructions available to me?

-- 
Wojciech A. Koszek
wkoszek at FreeBSD.czest.pl
http://FreeBSD.czest.pl/~wkoszek/


More information about the freebsd-hackers mailing list