
On Tue, Nov 25, 2008 at 04:32:00PM -0800, Bryan McLellan wrote:
I recently started configuring guests to use both a serial console and a graphics element. One of the nodes with this configuration kept locking up after running for some time. Trying to access the guest through virt-manager would leave virt-viewer hung at the connecting to screen. The guest would not respond to any network traffic including icmp. The user would destroy the domain and restart it to recover. Eventually the problem came to me and I found that immediately upon running 'virsh console domain' the guest would recover. The console contained:
BUG: soft lockup - CPU#0 stuck for 94393s! [postgresql-8.3:4975]
I discovered a bug in a puppet recipe caused postgres to reload regularly, printing a message to the console each time. Running puppet in a loop to continue producing these messages to the console caused another lockup that was recoverable by accessing the serial console in the same manner. I have since fixed that recipe, but I'm uncomfortable about the possibility of this happening again.
Is there a way to configure libvirt to cache the serial console on the host so the buffer on the guest does not fill up when you aren't connected to the console, or should I disable the serial console?
This is actually a bug in QEMU. It should never block the VM when the serial port buffer fills up. Unfortunately when the serial port was connected to a TTY, QEMU would block on the write :-( The recent KVM releases fix this, but QEMU goes years without a release so it still suffers from this. I'd recommend filing a bug against QEMU in your distro. There's nothing libvirt can do to fix this. Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|