Re: printk.time causes rare kernel boot hangs

From: Richard W.M. Jones
Date: Wed Jun 14 2023 - 06:33:13 EST


OK I have a simpler test:

$ while true; do qemu-system-x86_64 -no-user-config -nodefaults -display none -machine accel=kvm:tcg,graphics=off -cpu max,la57=off -m 1280 -no-reboot -rtc driftfix=slew -no-hpet -global kvm-pit.lost_tick_policy=discard -kernel vmlinux -serial stdio -append "panic=1 console=ttyS0 edd=off udevtimeout=6000 udev.event-timeout=6000 no_timer_check printk.time=1 cgroup_disable=memory usbcore.nousb cryptomgr.notests tsc=reliable 8250.nr_uarts=1 root=UUID=7cd9caf4-6491-41a5-b387-38af6fa2d638 selinux=0 guestfs_verbose=1 TERM=xterm-256color" >& /tmp/log ; echo -n . ; done

where "vmlinux" is a locally compiled kernel with CONFIG_PRINTK_TIME=y
set. I'm using the current git head.

This will print dots about once a second. When it stops printing dots
(after potentially many thousands of iterations), take a look at
/tmp/log to see if it has hung at:

[ 0.071830] Freeing SMP alternatives memory: 48K

I tried connecting gdb to qemu but so far I've not successfully
managed to collect a usable stack trace. I can't seem to get it to
print symbols, even though I believe I have disabled kASLR, but still
trying.

Rich.

--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html