utmapp / UTM

Virtual machines for iOS and macOS
https://getutm.app
Apache License 2.0
25.42k stars 1.28k forks source link

QEMU issues with 32-bit applications and floating math #6283

Open arekkusu42 opened 3 months ago

arekkusu42 commented 3 months ago

As discussed in #5371 and #4990 QEMU 7.2 introduced a TCG regression which:

Until this is resolved, I suggest rolling UTM's QEMU back to 7.1.

I can not find an open QEMU bug tracking this, so possibly they are unaware. The root cause is probably this commit, but I have not debugged it to confirm. It also looks like the TCG i386 emulator has seen many changes after 7.2, so before filing a new bug someone needs to reproduce the problem with a current QEMU release or TOT.

Minimal reproducers are here.

osy commented 3 months ago

We plan to update QEMU to the latest version in the next release. Do you know if it's fixed upstream?

arekkusu42 commented 3 months ago

I do not know; QEMU does not provide Mac binaries, and I do not currently have a build environment to build/test/debug it.

Reviewing the TCG commits I do not see any obvious fix, so I suspect the problem is still there, but as I mentioned, someone needs to reproduce with QEMU TOT. If a new UTM beta with updated QEMU is released before I set up a build environment, I can test it that way.

(updating QEMU should fix this annoying assertion though, so that'd be nice.)

osy commented 3 months ago

You can use brew install qemu if you need macOS binaries

arekkusu42 commented 3 months ago

If you come from Linux, this may seem normal, but brew is... very far from what I would call "providing Mac binaries". On a Mac, downloading a .dmg and double-clicking the app does not require:

Anyhow... I did set up homebrew (in a Sonoma VM, thank you UTM!) and it installed qemu 8.2.1 (so I can't speak to the 9.0rc or TOT). Then, after copying VMs around and cobbling together invocations, I verified that the three minimal reproducers do NOT crash, in Mavericks or Sierra. I was able to run my ancient (compiled as i386) emulators, inside the qemu-system-x86_64 emulator, inside the UTM arm64-virtualized-on-arm64 Sonoma. Woot.

So, that means that TCG looks fixed, circa QEMU 8.2.1? I guess you should go ahead and update in the next release, and we'll see if anything else in the UTM build causes problems.