tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Rump makes the kernel problematically brittle
I've got two 8.0 machines at work.
I just did a build-of-the-world on them. They both failed, and at the
same spot. This is not all that surprising, since I checked that
/usr/src and /usr/xsrc were identical between the two, but it does mean
that it probably is not something like a fluke timestamp glitch. It
appears to be something wrong with rump and its reaction to a kernel
change - see below.
In each case, the build was done as me, a nonprivileged user, using
(cd /usr/src && sh ./build.sh -D /home/mouse/amd64/DESTDIR -O /home/mouse/amd64/OBJDIR -x -U build)
with stdout and stderr redirected to a logfile. (The -D and -O
directories were pre-created manually, starting out empty; as the names
imply, this is all on amd64.) The logfiles are nearly 50 megs, so
posting them here directly is, I think, counterindicated. Once I sed
out the timestamps generated by build.sh
(sed -e "s/Thu Apr 2 ..:..:../Thu Apr 2 xx:xx:xx/"), the build logs for the two machines are bit-identical.
They end with
dependall ===> lib/librumpdev
/home/mouse/amd64/OBJDIR/tooldir.NetBSD-8.0-amd64/bin/nbconfig -b /home/mouse/amd64/OBJDIR/lib/librumpdev -s /usr/src/sys /usr/src/lib/librumpdev/../../sys/rump/librump/rumpdev/MAINBUS.ioconf
touch ioconf.c ioconf.h locators.h
# create librumpdev/autoconf.d
[...]
# create librumpdev/dev_verbose.d
[...]
# create librumpdev/ioconf.d
[...]
# create librumpdev/kern_pmf.d
[...]
# create librumpdev/rump_dev.d
[...]
# create librumpdev/subr_autoconf.d
CC=/home/mouse/amd64/OBJDIR/tooldir.NetBSD-8.0-amd64/bin/x86_64--netbsd-gcc /home/mouse/amd64/OBJDIR/tooldir.NetBSD-8.0-amd64/bin/nbmkdep -f subr_autoconf.d.tmp -- -std=gnu99 -I/usr/src/lib/librumpdev/../../sys/rump/librump/rumpkern --sysroot=/home/mouse/amd64/DESTDIR -DCOMPAT_50 -DCOMPAT_60 -DCOMPAT_70 -nostdinc -imacros /usr/src/lib/librumpdev/../../sys/rump/include/opt/opt_rumpkernel.h -I/usr/src/lib/librumpdev -I. -I/usr/src/lib/librumpdev/../../sys/rump/../../common/include -I/usr/src/lib/librumpdev/../../sys/rump/include -I/usr/src/lib/librumpdev/../../sys/rump/include/opt -I/usr/src/lib/librumpdev/../../sys/rump/../arch -I/usr/src/lib/librumpdev/../../sys/rump/.. -DDIAGNOSTIC -DKTRACE -D_FORTIFY_SOURCE=2 /usr/src/lib/librumpdev/../../sys/rump/../kern/subr_autoconf.c && mv subr_autoconf.d.tmp subr_autoconf.d
/usr/src/lib/librumpdev/../../sys/rump/../kern/subr_autoconf.c:86:26: fatal error: opt_autoconf.h: No such file or directory
compilation terminated.
nbmkdep: compile failed.
*** Failed target: subr_autoconf.d
[...cascade of nested make failures, ending with...]
ERROR: Failed to make build
*** BUILD ABORTED ***
I do have changes as compared to stock 8.0 source, but not much, mostly
hardware driver changes. The full list of affected files and how
they're touched (I can provide full diffs if relevant):
usr/src/distrib/sets/lists/comp/mi
Get three hardware .h files (below) installed in /usr/include.
usr/src/sys/conf/files
Add a defflag for an option added to com.c (below).
usr/src/sys/conf/majors
Add a device-major for the 7300 driver (below).
usr/src/sys/dev/ic/Makefile
Install two of the three .h files (lptioc.h and lptreg.h).
usr/src/sys/dev/ic/com.c
Add the ability to delay output by a userland-configurable
time.
usr/src/sys/dev/ic/lpt.c
usr/src/sys/dev/ic/lptioc.h
usr/src/sys/dev/ic/lptreg.h
usr/src/sys/dev/ic/lptvar.h
Give it a mode that's "parallel port" instead of "printer
interface", including some custom tweaks for the use case.
usr/src/sys/dev/pci/7300a-reg.h
usr/src/sys/dev/pci/7300a.c
usr/src/sys/dev/pci/7300a.h
A driver for the Adlink 7300A (depressingly heavily customized
for the use case, but still...).
usr/src/sys/dev/pci/Makefile
Install the third .h file (7300a.h).
usr/src/sys/dev/pci/files.pci
Add the 7300 driver.
usr/src/sys/dev/pci/if_wm.c
Add some debugging kludgery.
usr/src/sys/dev/pci/ixgbe/ix_txrx.c
Make it build when neither INET nor INET6 is enabled.
usr/src/sys/dev/pci/pucdata.c
Add the NetMos NM9912.
usr/src/sys/dev/usb/usb_subr.c
Print something more informative than just "device problem"
when having difficulty with a device.
usr/src/sys/kern/files.kern
Add "defflag opt_autoconf.h NO_DETACH_MESSAGES".
usr/src/sys/kern/subr_autoconf.c
Include "opt_autoconf.h" and implement NO_DETACH_MESSAGES, to
suppress device-detached console spammage on shutdown.
usr/src/sys/net/if_loop.c
Make it build when neither INET nor INET6 is enabled.
usr/xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Init.c
usr/xsrc/external/mit/xorg-server/dist/hw/xfree86/vbe/vbe.c
Add options to the X server to deal with some DDC issues
(-ddc-capture, to record DDC info, and -ddc-fallback, to
provide DDC info to be used when the server can't obtain any on
startup).
This kernel tree is designed to support a use case that uses Ethernet
but does not use IP, hence wanting network drivers to build with
neither INET nor INET6 defined, and has a good deal of
application-specific external hardware, which uses the 7300, lpt, and
com drivers to interface to it. (It's a commercial product, so I can't
give full details, but I _can_ show full diffs for any of the above
files - I've been careful to keep the commercial secret sauce out of
the /usr/*src changes.)
But the error makes me reasonably sure it's related to the defflag I
added to files.kern. I also saw something similar in 5.2 when I added
SCM_MEMORY (sibling to SCM_RIGHTS) and had to fiddle include files in
/sys/kern/uipc_* - a full build promptly crashed somewhere in the rump
stuff. I don't recall details, but I think they were include-file
issues then too (if anyone cares, I can check out the relevant tree and
find out within a day or two). For 5.2, I just excised rump from my
builds (when it broke like that, it jumped from "mild maybe-someday
positive" to "major immedate negative" in one dramatic leap).
This makes it look as though 8.0's rump has related issues. Should I
just excise rump from the 8.0 build too, or have I done something wrong
somewhere, or does this indicate a real bug that needs fixing, or what?
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse%rodents-montreal.org@localhost
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B
Home |
Main Index |
Thread Index |
Old Index