[SeaBIOS] vgabios -> seabios breaks (my) 16-bit applications

Richard Laager rlaager at wiktel.com
Mon Jan 12 09:53:58 CET 2015


[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.

-- 
Richard
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part
URL: <http://www.seabios.org/pipermail/seabios/attachments/20150112/aad7a628/attachment.asc>


More information about the SeaBIOS mailing list