[I've reordered the quoted text.]
On Fri, 2015-01-09 at 11:58 -0500, Kevin O'Connor wrote:
Does the crash occur around the time one of the debug messages is produced, or is the crash seemingly uncorrelated? I don't see anything suspicious in the log.
Sorry, I forgot to note this in my email. All of the messages are from bootup. There are no logs from when I start the 16-bit application.
Do other 16bit programs in your environment also crash?
This suite of programs are the only 16-bit applications we run.
Does the app or some part of its 16bit code run for some time before the crash, or does the crash occur immiediately (ie, is it NTVDM crashing or is something in the app causing NTVDM to crash)?
It crashes immediately on startup.
I'm a bit surprised that NTVDM would be directly accessing the video bios, or would allow the 16bit programs it runs to direclty access the bios. Can you provide some more info on the app itself - is it a dos program, a windows 3.0 program, does it run full screen or in a window? If it runs full screen, is it possible to run it in a window, and does that still crash?
I'm fairly confident they're Windows programs, as opposed to DOS programs. They are not fullscreen, they run in a window.
Getting a test case that we could run to reproduce on our side would really help.
Paolo Bonzini suggested I try the 16-bit SkiFree. It works on vgabios. It crashes on seabios, immediately on start.
To be specific, 16-bit Skifree crashes with Ubuntu-packaged seabios1.7.4-4 on 32-bit Windows Server 2008 running on Ubuntu Trusty. It also crashes with a build from seabios git I did just now.
Also, can you check if the emulated cirrus vga card has the same issue (qemu command line of "-vga cirrus" and make sure there is no "-vga std" - not sure how one does that from libvirt).
Skifree still crashes with seabios git and cirrus. I verified there is no -vga std in the command line in the cirrus test. The only "vga" on the command line is: -device cirrus-vga,id=video0,bus=pci.0,addr=0x2
There are a couple of things you could try to see if it makes any difference - entirely disable debugging in seavgabios (CONFIG_DEBUG_LEVEL=0) in the unlikley case that the debug port writes themselves are causing confusion, and try disabling CONFIG_VGA_ALLOCATE_EXTRA_STACK.
Turning off CONFIG_VGA_ALLOCATE_EXTRA_STACK makes Skifree work on cirrus and vga.
I don't know how this all works, but as a guess, I further tried with "vga" (not cirrus) using VGA_EXTRA_STACK_SIZE=256 and VGA_EXTRA_STACK_SIZE=16. The crash recurs with both.