-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CrossOver not working #6
Comments
From that link:
I am not a developer, so I'm not 100% sure on this, but 0 32-bit code works on AMD because of (missing) OPEMU, so this is why CrossOver does not work. |
You cannot run 32-bit code on AMD systems. It indeed has to do with OPEMU or rather the lack thereof. |
Wine/CodeWeavers dev here. A guy on our IRC channel brought my attention to this bug. I am currently waiting for a compile to finish so I am dropping a few quick notes. I'm afraid I can't spend a lot of time though because we don't support hackintoshes. For some technical detail see https://www.winehq.org/pipermail/wine-devel/2019-December/156602.html . The 32 bit execution magic works by creating 32 bit LDT entries via i386_set_ldt. That's what the special permission is needed for, although it seems 10.15.4 removed that requirement. The other way around the permission is to disable system integrity protection. LDT entries aren't CPU specific (unlike HW Hypervisors, and the Apple hypervisor API that is very intel specific), so in theory this should work. If I understand the screenshots right and taskmgr is at least starting up, and if that cmd is running in 32 bit code, the important thing is working. What is probably a problem is system calls and signal delivery to a process/thread that currently has %cs pointing to a 32 bit code segment. If you have some custom kernel modifications or modules that's the first place to look. Try to build yourself a C program that builds as a 64 bit C program but calls 32 bit bytecode via a 32 bit code segment entry and see if you can get this working on AMD. It's somewhat tricky - beware address space, stack and data segments, return addresses, so first make sure your test program works on a proper mac. |
Ah yes, the CrossOver 19 source code, or at least the Wine parts, are available at https://www.codeweavers.com/products/more-information/source. I believe the modifications we made to Clang to handle 32 bit pointer sizes in 64 bit environments are also in there. At very least I don't think we're deliberately keeping them secret, it's just a really messy piece of code. Upstream Wine doesn't want it as is, the plan there is to eventually work without a magic compiler. |
Another Wine/CodeWeavers dev here. :) CrossOver is still running 32-bit code directly on the CPU. It is not emulating or translating that code to 64-bit. If I understand the purpose of OPEMU correctly, it's for emulating certain Intel-only instructions that AMD CPUs don't support natively in 32-bit mode. So, IOIIIO is correct, the lack of OPEMU will prevent CrossOver from running 32-bit Windows programs. The fact that it ran some to a certain extent might simply be because they didn't attempt to execute one of the instructions that require emulation until relatively late in the run. I would expect that the same would be true on Mojave and earlier using this project. So, it's not directly related to our 32-on-64-bit support. The reason why OPEMU is deprecated with Catalina is because one is not expected to run any 32-bit code on Catalina, so it shouldn't be necessary. Well, surprise! It is necessary for CrossOver's 32-on-64-bit support because we are running 32-bit code. |
To add on to this, whilst OPEMU is deprecated with Catalina for the purpose of hackintoshing, it still genuinely may be useful for some 64-bit apps that require Intel-specific instructions to be present, i.e. Adobe, REAPER, etc. |
Doubt that what crossover19 needs is OPEMU.
I think a conclusion can be deduced from all above: what blocks crossover19 from running on Catalina is NOT simply lacking of OPEMU. Though I also don't know what it actually IS, yet : ) |
Can you test CrossOver 20 beta? I'm in work now, I want to see what happens when you run it on Ryzentosh. |
Sorry for the late reply, but I cannot. Not owe a copy :( Using build here, so need waiting new open source releases.
@stefand Could you please give a simple code example? That will helps greatly! Thanks in advance. |
You can test Crossover 20 by downloading it from beta section on CodeWeavers site (there was no official release so far). |
@palxex Ken once built such a thing, I'll ask him if he still has it. A few Linux-specific examples are floating around on stackoverflow, e.g. https://stackoverflow.com/questions/18272384/far-call-into-user32-cs-from-64-bit-code-on-linux . The unfortunate thing about Linux is that it allocates a lot of memory in the low 4GB even in a 64 bit process, so patched together examples are much more likely to work by luck than on Mac. |
I tested
When running |
@HoshiYamazaki I saw your request on IRC. Unfortunately I don't have any 32<->64 bit call code on my computers and Ken is away for a while. I am afraid I can't provide you with example code in the near future :-( . |
Crossover 20 beta 3 works neither, same stack overflow at the same address... |
CrossOver 20 final release too doesn't work (at least when running 32bit code, for example FF XIV works fine), also with newest patch from @Shaneee that fixes MTRR/PAT functionality (mapping) it still raises stack overflow error with the same address. Not sure at all what is the problem now. @palxex From your response I see: Why it even uses opemu_systenter call if that is not used? I don't quite get that but I'm not familiar with XNU kernel at all. |
For some reason Crossover started to report correctly processes and memory usage now on my rig until it crashes. Also, it crashes too when using win 98/xp/7 x32 bit bottle. Here is my log:
From what I understand, the error is not fixable by CodeWeavers team (@stefand) but the problem is in (probably) Fix PAT patch which is still broken and is not allocating memory regions correctly in MTRR/PAT values. Confirmed also by @Pavo-IM it does work without Fix PAT patch which is not needed on threadrippers. @Shaneee can you revisite the issue in free time? |
Nope, you can configure macOS VM under Proxmox with GPU Passthrough and CrossOver will run and that's the only solution. |
Steam installs correctly, downloads its updates fine but hangs updating. Need to find out why! |
Can confirm that CrossOver update to 21.1 version does not resolve the issue. |
Version 21.2 does not work either. Version 22.0.0 beta 2 does not work either, but gives new errors when creating Windows 10 32-bit based bottle. I also tried to create Windows 7 32-bit bottle, and then install steam in it. It gives similar errors: What surprises me the most that using |
Okey, so CrossOver 22.0.1 and 22.1-b1 are not working either - anyway I managed to get again different errors when I started to debug the issue on my Ryzen rig (on Ventura 13.1 stable):
I'm getting these errors during Steam installation, and they seem to be releated to memory allocation - I'm still unsure what we can do about this, and I'm still curious why CrossOver is working without hassle on Ryzens from 5xxx/7xxx series (according to AMD OSX discord). I maybe will try to look into the issue but I don't give any hope because maybe soon I will be not able todo it since I'm planning to switch to Intel/ARM based Mac. |
Have this same issue. Wine programs in general seem to be very unstable on my Ryzen 2xxx. They work great comparatively on an Intel MacBook. Is this not an issue on the Ryzen 5xxx/7xxx? |
Have the same issue on Ventura 13.4.1 Ryzen 5 3600
|
Hey, can anybody from people posting here try to test CrossOver 23 beta version? I don't have anymore access to my old AMD build, but I will really appreciate if somebody will do it. You don't need to install Sonoma, just try to download the beta version from website and install it on for e.g. Ventura. Thanks in advance! |
Moved to Intel, though could maybe test on the old AMD machine, but not a part of their beta tester program |
Can confirm Crossover 23 works perfectly fine on my AMD 5600x. |
Good to know that the Ryzen 5xxx's work |
Its still not working on amd rayzen 5 5625u, |
Please re-test it on CrossOver 24, the new release probably has different WoW64 mechanism that can fix 32-bit issue. |
Both 3DMark 2001 and 3DMark 2005 run perfectly with Crossover 24, AMD 7950x based Hackintosh |
Can anybody test in any laptop with Vega 8 / 10 that uses |
I have a Ryzen 5 3550H and Vega 8. |
Thanks, I very much appreciate your post! Anyone else has also tried to run OSX on AMD + NootedRed and tested CrossOver 24? |
CPU: r5 3600
macOS version: 10.15.4
15h/16h or 17h: 17h
I am using and can reproduce on the latest patches: yes, using newest kexts from Acidanthera and OpenCore
Describe the bug
CrossOver is not working on Catalina, but I don't quite understand why, since OPEMU is deprecated in Catalina. From far what I know CrossOver is using
com.apple.security.ldt-in-64bit-process
function to work properly, according to this:https://twitter.com/comex/status/1204919560010223618
Not sure if that's an bug, support request, and where bugfix should be implemented.
Screenshots
![image](https://user-images.githubusercontent.com/21007545/79445428-f4834e00-7fdc-11ea-9279-7c712e06710a.png)
The text was updated successfully, but these errors were encountered: