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