config(8) -x headscratcher
Kimmo Paasiala
kpaasial at gmail.com
Sat Apr 27 20:42:20 UTC 2013
On Sat, Apr 27, 2013 at 10:05 PM, Wojciech A. Koszek
<wkoszek at freebsd.org> wrote:
> 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/
The kernel config file:
http://pastebin.com/j0J9NPCi
My /etc/make.conf:
http://pastebin.com/HYudWCA9
And /etc/src.conf:
http://pastebin.com/ZAKq6ABT
I'll see how I can make the kernel image available.
-Kimmo
More information about the freebsd-hackers
mailing list