VirtualBox

Opened 5 years ago

Closed 5 years ago

Last modified 2 years ago

#19275 closed defect (wontfix)

Windows 98SE is not installable in VirtualBox 6.1.2 with a Ryzen 3000 CPU

Reported by: Artem S. Tashkinov Owned by:
Component: other Version: VirtualBox 6.1.2
Keywords: Cc:
Guest type: Windows Host type: Linux

Description (last modified by Ramshankar Venkataraman)

Steps to reproduce:

1) Create a new VM called Windows 98 - everything by default, RAM 64MB, HDD 2GB 2) Attach win98se.iso 3) Install it (enable large disk support, use all defaults) Hardware detection finishes successfully, restart.

Now the "Setting up hardware" stage begins and everything breaks at this point.

Explorer: This program has performed an illegal operation and will be shut down.

I don't know whether it's a regression or not.

I could successfully install VirtualBox 5.x and Intel Core i5 2500 CPU.

Now I have a new VirtualBox and a new CPU, so it's hard to say.

Attachments (3)

VirtualBox_Windows 98_28_01_2020_16_19_05.png (8.2 KB ) - added by Artem S. Tashkinov 5 years ago.
Installation error
VBox.log.xz (13.4 KB ) - added by Artem S. Tashkinov 5 years ago.
VBox.log
VBox.log.2.xz (41.1 KB ) - added by Artem S. Tashkinov 5 years ago.
VirtualBox crash when the guest IO APIC is on and Nested Pages is off

Download all attachments as: .zip

Change History (16)

by Artem S. Tashkinov, 5 years ago

Installation error

by Artem S. Tashkinov, 5 years ago

Attachment: VBox.log.xz added

VBox.log

comment:1 by Artem S. Tashkinov, 5 years ago

You can get the installation CD here:

https://thinfi.com/iz53

Password is PRXXXXX where XXXXX are this ticket number.

comment:2 by Artem S. Tashkinov, 5 years ago

Here's an entire VM which boots into a crash:

https://thinfi.com/iz5n

The password is the same.

comment:3 by Artem S. Tashkinov, 5 years ago

What I've found out:

The "Nested pages" option definitely makes the guest crash a lot more than it would without this option.

After enabling IO APIC and disabling "Nested pages" the installation proceeds almost normally, except during the Updating System Settings stage, VirtualBox crashes:

A critical error has occurred while running the virtual machine and the machine execution has been stopped.

by Artem S. Tashkinov, 5 years ago

Attachment: VBox.log.2.xz added

VirtualBox crash when the guest IO APIC is on and Nested Pages is off

comment:4 by Artem S. Tashkinov, 5 years ago

I cannot claim it but IO APIC being disabled or/and "Nested pages" being enabled seemingly makes Windows 98 SE work incorrectly in a way that it writes broken files to the disk or executes certain code paths incorrectly.

It's quite surprising though since I was under the impression that IO APIC is required only for SMP machines which this version of Windows doesn't even support.

Also, according to various Internet sources Windows 98 doesn't even support IO APIC in the first place which makes this issue even more mysterious.

Anyways, it's up to you to investigate and solve this bug. Considering Windows 98 SE is a dead unsupported OS I'm not even sure it's worth your efforts but a lot of people will be disappointed.

comment:5 by Artem S. Tashkinov, 5 years ago

Windows ME also produces a gazillion of errors during installation and cannot be really installed as it simply doesn't allow to log in (a lot of files are damaged).

comment:6 by Ramshankar Venkataraman, 5 years ago

Description: modified (diff)

comment:7 by Ramshankar Venkataraman, 5 years ago

As a general reminder, please do NOT post serial keys of software regardless of whether they are actively supported or not.

comment:8 by michaln, 5 years ago

Before opening such tickets, please do some due diligence first. Google for "windows 98 ryzen crash" and you will see that this is not a problem with VirtualBox, it's a problem with Ryzen CPUs and Windows 9x, or more likely a bug in Windows 9x. See e.g. here https://communities.vmware.com/thread/579537

I believe this blog post explains what the problem is. The method Windows 9x uses to manage page tables does not work (reliably) on AMD Bulldozer and Ryzen CPUs, and it probably only works by accident on other CPUs.

Disabling the I/O APIC of course does nothing, Windows 9x does not use it. But disabling nested paging does a lot, because it hides the TLB management problem referenced above.

Please note that Windows 9x is known to have serious problems on fast CPUs.

Also note that the first generation Ryzens had a bug related to VME (Virtual-8086 Mode Extensions) but VirtualBox works around that and AMD fixed that a long ago.

You can complain to AMD but they will very likely tell you that this is a bug in Win9x that they have no desire working around. Intel has done such things too, various old operating systems no longer work on current Intel CPUs because they did things that they shouldn't have done, and they're no longer commercially important.

The bottom line is that this is not a regression and it's not something VirtualBox can fix. Disabling nested paging may help but Windows 9x still remains an unsupported guest OS in VirtualBox.

in reply to:  8 comment:9 by Artem S. Tashkinov, 5 years ago

Replying to michaln:

Before opening such tickets, please do some due diligence first. Google for "windows 98 ryzen crash" and you will see that this is not a problem with VirtualBox, it's a problem with Ryzen CPUs and Windows 9x, or more likely a bug in Windows 9x. See e.g. here https://communities.vmware.com/thread/579537

I believe this blog post explains what the problem is. The method Windows 9x uses to manage page tables does not work (reliably) on AMD Bulldozer and Ryzen CPUs, and it probably only works by accident on other CPUs.

I'm sorry I'll do that from now on.

Disabling the I/O APIC of course does nothing, Windows 9x does not use it. But disabling nested paging does a lot, because it hides the TLB management problem referenced above.

Please note that Windows 9x is known to have serious problems on fast CPUs.

Also note that the first generation Ryzens had a bug related to VME (Virtual-8086 Mode Extensions) but VirtualBox works around that and AMD fixed that a long ago.

You can complain to AMD but they will very likely tell you that this is a bug in Win9x that they have no desire working around. Intel has done such things too, various old operating systems no longer work on current Intel CPUs because they did things that they shouldn't have done, and they're no longer commercially important.

The bottom line is that this is not a regression and it's not something VirtualBox can fix. Disabling nested paging may help but Windows 9x still remains an unsupported guest OS in VirtualBox.

It would be great if VirtualBox showed some sort of notification/warning in case the user tries to install or use a guest OS which is not supported especially when paired with a CPU architecture which is known not to work with it (like Ryzen). I guess this bug report may be closed as invalid.

Right now VBox 6.1.2 happily allows to create guests starting from Windows 3.1.

Thank you for your comment! Much appreciated.

comment:10 by Artem S. Tashkinov, 5 years ago

You can probably mark this ticket as a dupe of #17502.

comment:11 by janitor, 5 years ago

Resolution: wontfix
Status: newclosed

comment:12 by michaln, 5 years ago

Expecting a notification/warning assumes that we test Windows 9x guests... but we don't, since they're not supported.

We could create Windows 9x VMs with nested paging disabled... but we don't really want to do that on most CPUs. Besides, if an existing Windows 9x VM is moved, the problem is still the same.

Most likely this will end up as a note in the documentation. We will consider turning off nested paging at run-time based on the host CPU and guest type, but I'm not promising anything.

Windows 9x just wasn't built to last.

comment:13 by Artem S. Tashkinov, 2 years ago

This is not a VBox issue, so please close it.

This is a perfectly working workaround: https://github.com/JHRobotics/patcher9x

Note: See TracTickets for help on using tickets.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette