qemu-system-i386/x86_64 crash with 1 MB guest RAM
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 d6550e9ed2e1a60
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://
To reproduce, use the following command lines:
./i386-
./x86_64-
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=0000000000
FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80
FPR0=0000000000
FPR2=0000000000
FPR4=0000000000
FPR6=0000000000
XMM00=000000000
XMM02=000000000
XMM04=000000000
XMM06=000000000
--- OUTPUT ENDS ---
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.