qemu-system-i386/x86_64 crash with 1 MB guest RAM

Bug #1587211 reported by Andrew Henderson
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Expired
Undecided
Unassigned

Bug Description

When launching qemu-system-i386 or qemu-system-x86_64 with 1 MB of RAM allocated to the guest (-m 1) and no guest image specified, QEMU will crash while trying to "execute code outside of RAM or ROM" after approximately 10 minutes. I discovered this while using QEMU 2.5.0, but I verified that it also occurs with 2.5.1.1 and the latest source available in git (2.6.50, commit d6550e9ed2e1a60d889dfb721de00d9a4e3bafbe). I built all of these different versions of QEMU on the same 64-bit Ubuntu 14.04.3 host using the distro's default GCC 4.8.4.

Two observations:

1. This only occurs when allocating 1 MB of RAM to the guest. When I allocate 2 MB, this does not happen. I tried running both i386/x86_64 QEMUs for hours with 2 MB and didn't observe this crash.

2. This may be a SeaBIOS bug, as there is no guest code to execute. After enabling the SeaBIOS debug at the ISA 0x402 port and redirecting it to stdio, the last SeaBIOS state transition reported ("Booting from ROM... Booting from c980:0361") occurs immediately at QEMU startup with no further logging messages seen prior to the crash ten minutes later. My captured SeaBIOS debug output is here: http://pastebin.com/GXm2L44E

To reproduce, use the following command lines:

./i386-softmmu/qemu-system-i386 -display none -m 1 -monitor stdio
./x86_64-softmmu/qemu-system-x86_64 -display none -m 1 -monitor stdio

For both 32/64-bit QEMUs, the output is the same. After running for about 10 minutes (I've seen it take between 7m 15s (v2.5.1.1) to 10m 25s (v2.6.50) of runtime to occur by using the "time" command), the following output is shown:

--- OUTPUT BEGINS ---
e1000: Reading register at offset: 0x00002410. It is not fully implemented.
e1000: Reading register at offset: 0x00002410. It is not fully implemented.
e1000: Reading register at offset: 0x00002410. It is not fully implemented.
e1000: Reading register at offset: 0x00002410. It is not fully implemented.
e1000: Reading register at offset: 0x00002418. It is not fully implemented.
e1000: Reading register at offset: 0x00002418. It is not fully implemented.
e1000: Reading register at offset: 0x00002418. It is not fully implemented.
e1000: Reading register at offset: 0x00002418. It is not fully implemented.
e1000: Reading register at offset: 0x00002420. It is not fully implemented.
e1000: Reading register at offset: 0x00002420. It is not fully implemented.
e1000: Reading register at offset: 0x00002420. It is not fully implemented.
e1000: Reading register at offset: 0x00002420. It is not fully implemented.
e1000: Reading register at offset: 0x00002428. It is not fully implemented.
e1000: Reading register at offset: 0x00002428. It is not fully implemented.
e1000: Reading register at offset: 0x00002428. It is not fully implemented.
e1000: Reading register at offset: 0x00002428. It is not fully implemented.
e1000: Reading register at offset: 0x00002430. It is not fully implemented.
e1000: Reading register at offset: 0x00002430. It is not fully implemented.
e1000: Reading register at offset: 0x00002430. It is not fully implemented.
e1000: Reading register at offset: 0x00002430. It is not fully implemented.
e1000: Reading register at offset: 0x00003410. It is not fully implemented.
e1000: Reading register at offset: 0x00003410. It is not fully implemented.
e1000: Reading register at offset: 0x00003410. It is not fully implemented.
e1000: Reading register at offset: 0x00003410. It is not fully implemented.
e1000: Reading register at offset: 0x00003418. It is not fully implemented.
e1000: Reading register at offset: 0x00003418. It is not fully implemented.
e1000: Reading register at offset: 0x00003418. It is not fully implemented.
e1000: Reading register at offset: 0x00003418. It is not fully implemented.
e1000: Reading register at offset: 0x00003420. It is not fully implemented.
e1000: Reading register at offset: 0x00003420. It is not fully implemented.
e1000: Reading register at offset: 0x00003420. It is not fully implemented.
e1000: Reading register at offset: 0x00003420. It is not fully implemented.
e1000: Reading register at offset: 0x00003428. It is not fully implemented.
e1000: Reading register at offset: 0x00003428. It is not fully implemented.
e1000: Reading register at offset: 0x00003428. It is not fully implemented.
e1000: Reading register at offset: 0x00003428. It is not fully implemented.
e1000: Reading register at offset: 0x00003430. It is not fully implemented.
e1000: Reading register at offset: 0x00003430. It is not fully implemented.
e1000: Reading register at offset: 0x00003430. It is not fully implemented.
e1000: Reading register at offset: 0x00003430. It is not fully implemented.
e1000: Reading register at offset: 0x00010000. It is not fully implemented.
e1000: Reading register at offset: 0x00010000. It is not fully implemented.
e1000: Reading register at offset: 0x00010000. It is not fully implemented.
e1000: Reading register at offset: 0x00010000. It is not fully implemented.
qemu: fatal: Trying to execute code outside RAM or ROM at 0x000a0063

EAX=00100000 EBX=00000018 ECX=00002c06 EDX=0009cde0
ESI=000caa20 EDI=00100000 EBP=ffffffff ESP=00007bcc
EIP=000038e3 EFL=00000046 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0000 00000000 ffffffff 00cf9300
CS =9c78 0009c780 ffffffff 008f9b00
SS =0000 00000000 ffffffff 008f9300
DS =9cf3 0009cf30 ffffffff 00cf9300
FS =0000 00000000 ffffffff 00cf9300
GS =0000 00000000 ffffffff 00cf9300
LDT=0000 00000000 0000ffff 00008200
TR =0000 00000000 0000ffff 00008b00
GDT= 00000000 00000000
IDT= 00000000 000003ff
CR0=00000010 CR2=00000000 CR3=00000000 CR4=00000000
DR0=00000000 DR1=00000000 DR2=00000000 DR3=00000000
DR6=ffff0ff0 DR7=00000400
CCS=000000c2 CCD=00002c06 CCO=CLR
EFER=0000000000000000
FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80
FPR0=0000000000000000 0000 FPR1=0000000000000000 0000
FPR2=0000000000000000 0000 FPR3=0000000000000000 0000
FPR4=0000000000000000 0000 FPR5=0000000000000000 0000
FPR6=0000000000000000 0000 FPR7=0000000000000000 0000
XMM00=00000000000000000000000000000000 XMM01=00000000000000000000000000000000
XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000
XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000
XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000
--- OUTPUT ENDS ---

Tags: seabios
Revision history for this message
Andrew Henderson (hendersa) wrote :

I forgot to mention that I configured QEMU with the following options prior to building it for these tests:

./configure --target-list=i386-softmmu,x86_64-softmmu --enable-debug --extra-cflags="-g -Wno-error"

I was modifying QEMU 2.5.0 for some of my own testing, and the extra-cflags options come from that. They should have no impact on the reproduction test detailed above if you wish to reproduce my build.

Revision history for this message
Thomas Huth (th-huth) wrote :

The QEMU project is currently considering to move its bug tracking to
another system. For this we need to know which bugs are still valid
and which could be closed already. Thus we are setting older bugs to
"Incomplete" now.

If you still think this bug report here is valid, then please switch
the state back to "New" within the next 60 days, otherwise this report
will be marked as "Expired". Or please mark it as "Fix Released" if
the problem has been solved with a newer version of QEMU already.

Thank you and sorry for the inconvenience.

Changed in qemu:
status: New → Incomplete
Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for QEMU because there has been no activity for 60 days.]

Changed in qemu:
status: Incomplete → Expired
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.