Apparent regression in r250359
Jim Ohlstein
jim at ohlste.in
Thu May 9 14:13:18 UTC 2013
On 05/09/13 01:30, Konstantin Belousov wrote:
> On Wed, May 08, 2013 at 01:14:52PM -0400, Jim Ohlstein wrote:
>> Hello,
>>
>> I upgraded my (custom) kernel earlier and found that multiple daemons
>> (cups, hal, syslog, ntpd, csh) crashed and dumped cores at or shortly
>> after boot.
>>
>> The error I saw several times on the console was:
>>
>> set_fpcontext err 22
>>
>> I recompiled using the GENERIC kernel and saw the same error.
>>
>>
>> The error appears to be in the changes made in r250359 in fpu.c, as
>> r250358 boots as expected.
>>
> Quite weird, and the most troublesome part is that I cannot reproduce
> it locally. As a temporal workaround, you could set 'hw.use_xsave=0'
> at the loader prompt. The instructions below for kgdb assume that
> you did not applied this workaround.
>
> What CPU do you have ? Please show me the verbose dmesg of the boot.
# sysctl hw.model
hw.model: AMD FX(tm)-8350 Eight-Core Processor
dmesg to follow privately. Recompiling the kernel with a large enough
'MSGBUF_SIZE' to handle the output.
>
> Next, please do the following:
> run 'kgdb /boot/kernel/kernel /dev/mem', and from the kgdb prompt,
> do 'x/1xw use_xsave' and 'x/1xg xsave_mask'.
Attached
>
> Also, see below.
>
>> # uname -a
>> FreeBSD lucid-insanity 9.1-STABLE FreeBSD 9.1-STABLE #3 r250358: Wed May
>> 8 11:56:43 EDT 2013
>> root at lucid-insanity:/usr/obj/usr/src/sys/GENERIC amd64
>>
>>
>> World and kernel are built with clang 3.2.
>>
>> r250359 produces the error and core dumps:
>>
>> Sample gdb output:
>>
>> # gdb cupsd cupsd.core
>> GNU gdb 6.1.1 [FreeBSD]
>> Copyright 2004 Free Software Foundation, Inc.
>> GDB is free software, covered by the GNU General Public License, and you are
>> welcome to change it and/or distribute copies of it under certain
>> conditions.
>> Type "show copying" to see the conditions.
>> There is absolutely no warranty for GDB. Type "show warranty" for details.
>> This GDB was configured as "amd64-marcel-freebsd"...(no debugging
>> symbols found)...
>> Core was generated by `cupsd'.
>> Program terminated with signal 10, Bus error.
>> Reading symbols from /usr/local/lib/libcupsmime.so.1...(no debugging
>> symbols found)...done.
>> Loaded symbols for /usr/local/lib/libcupsmime.so.1
>> Reading symbols from /lib/libz.so.6...done.
>> Loaded symbols for /lib/libz.so.6
>> Reading symbols from /usr/lib/libssl.so.6...done.
>> Loaded symbols for /usr/lib/libssl.so.6
>> Reading symbols from /lib/libcrypto.so.6...done.
>> Loaded symbols for /lib/libcrypto.so.6
>> Reading symbols from /usr/local/lib/libpaper.so.2...done.
>> Loaded symbols for /usr/local/lib/libpaper.so.2
>> Reading symbols from /usr/local/lib/libcups.so.2...done.
>> Loaded symbols for /usr/local/lib/libcups.so.2
>> Reading symbols from /lib/libcrypt.so.5...done.
>> Loaded symbols for /lib/libcrypt.so.5
>> Reading symbols from /lib/libm.so.5...done.
>> Loaded symbols for /lib/libm.so.5
>> Reading symbols from /usr/local/lib/libiconv.so.3...done.
>> Loaded symbols for /usr/local/lib/libiconv.so.3
>> Reading symbols from /lib/libthr.so.3...done.
>> Loaded symbols for /lib/libthr.so.3
>> Reading symbols from /lib/libc.so.7...done.
>> Loaded symbols for /lib/libc.so.7
>> Reading symbols from /libexec/ld-elf.so.1...done.
>> Loaded symbols for /libexec/ld-elf.so.1
>> #0 0x00007ffffffff1e3 in ?? ()
>> [New Thread 802407400 (LWP 100450/cupsd)]
>> (gdb)
>>
>> # gdb csh csh.core
>> GNU gdb 6.1.1 [FreeBSD]
>> Copyright 2004 Free Software Foundation, Inc.
>> GDB is free software, covered by the GNU General Public License, and you are
>> welcome to change it and/or distribute copies of it under certain
>> conditions.
>> Type "show copying" to see the conditions.
>> There is absolutely no warranty for GDB. Type "show warranty" for details.
>> This GDB was configured as "amd64-marcel-freebsd"...
>> Core was generated by `csh'.
>> Program terminated with signal 10, Bus error.
>> Reading symbols from /lib/libncurses.so.8...done.
>> Loaded symbols for /lib/libncurses.so.8
>> Reading symbols from /lib/libcrypt.so.5...done.
>> Loaded symbols for /lib/libcrypt.so.5
>> Reading symbols from /lib/libc.so.7...done.
>> Loaded symbols for /lib/libc.so.7
>> Reading symbols from /usr/local/lib/libiconv.so...done.
>> Loaded symbols for /usr/local/lib/libiconv.so
>> Reading symbols from /libexec/ld-elf.so.1...done.
>> Loaded symbols for /libexec/ld-elf.so.1
>> #0 0x00007ffffffff1e3 in ?? ()
>> (gdb)
> From the core dump above, please do
> 'info registers'
> then take the value from %rdi and do
> 'x/2xg $rdi+0x300',
> then take the first value printed (let denote it as XSAVEADDR) and do
> 'x/8xg XSAVEADDR'.
# gdb csh csh.core
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...
Core was generated by `csh'.
Program terminated with signal 10, Bus error.
Reading symbols from /lib/libncurses.so.8...done.
Loaded symbols for /lib/libncurses.so.8
Reading symbols from /lib/libcrypt.so.5...done.
Loaded symbols for /lib/libcrypt.so.5
Reading symbols from /lib/libc.so.7...done.
Loaded symbols for /lib/libc.so.7
Reading symbols from /usr/local/lib/libiconv.so...done.
Loaded symbols for /usr/local/lib/libiconv.so
Reading symbols from /libexec/ld-elf.so.1...done.
Loaded symbols for /libexec/ld-elf.so.1
#0 0x00007ffffffff1e3 in ?? ()
(gdb) info registers
rax 0x16 22
rbx 0x101 257
rcx 0x7ffffffff1e3 140737488351715
rdx 0x7fffffffc980 140737488341376
rsi 0x1 1
rdi 0x7fffffffc980 140737488341376
rbp 0x7fffffffd000 0x7fffffffd000
rsp 0x7fffffffc968 0x7fffffffc968
r8 0x0 0
r9 0x19 25
r10 0x50 80
r11 0x203 515
r12 0x801460400 34381104128
r13 0x0 0
r14 0x7fffffffcfb0 140737488342960
r15 0x7fffffffcfd0 140737488342992
rip 0x7ffffffff1e3 0x7ffffffff1e3
eflags 0x10203 66051
cs 0x43 67
ss 0x3b 59
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
(gdb) x/2xg 0x7fffffffc980+0x300
0x7fffffffcc80: 0x00007fffffffcd40 0x00000000000001c0
(gdb) x/8xg 0x00007fffffffcd40
0x7fffffffcd40: 0xffffffffffffffff 0x0000000000000000
0x7fffffffcd50: 0x0000000000000000 0x0000000000000000
0x7fffffffcd60: 0x0000000000000000 0x0000000000000000
0x7fffffffcd70: 0x0000000000000000 0x0000000000000000
(gdb)
>
>>
>> I can produce more if anyone is interested.
>>
--
Jim Ohlstein
-------------- next part --------------
# uname -a
FreeBSD lucid-insanity 9.1-STABLE FreeBSD 9.1-STABLE #4 r250359: Wed May 8 12:29:28 EDT 2013 root at lucid-insanity:/usr/obj/usr/src/sys/GENERIC amd64
#
# kgdb /boot/kernel/kernel /dev/mem
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd"...
Unread portion of the kernel message buffer:
<6>pid 2016 (syslogd), uid 0: exited on signal 10 (core dumped)
ahcich11: SNTF 0x0001
Reading symbols from /boot/kernel/zfs.ko...Reading symbols from /boot/kernel/zfs.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/zfs.ko
Reading symbols from /boot/kernel/opensolaris.ko...Reading symbols from /boot/kernel/opensolaris.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/opensolaris.ko
Reading symbols from /boot/kernel/linux.ko...Reading symbols from /boot/kernel/linux.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/linux.ko
Reading symbols from /boot/modules/nvidia.ko...done.
Loaded symbols for /boot/modules/nvidia.ko
Reading symbols from /boot/kernel/linprocfs.ko...Reading symbols from /boot/kernel/linprocfs.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/linprocfs.ko
Reading symbols from /boot/kernel/pf.ko...Reading symbols from /boot/kernel/pf.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/pf.ko
#0 sched_switch (td=0xffffffff81384300, newtd=0xfffffe000d66f920, flags=<value optimized out>)
at /usr/src/sys/kern/sched_ule.c:1920
1920 cpuid = PCPU_GET(cpuid);
(kgdb) x/1xw use_xsave
0x1: Error accessing memory address 0x1: Bad address.
(kgdb) x/1xg xsave_mask
0x4000000000000007: Error accessing memory address 0x4000000000000007: Bad address.
(kgdb) quit
#
More information about the freebsd-stable
mailing list