Skip to content
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

Remove the CPU's AVX extension requirement on the macOS build #14069

Open
alxlve opened this issue Dec 28, 2024 · 6 comments
Open

Remove the CPU's AVX extension requirement on the macOS build #14069

alxlve opened this issue Dec 28, 2024 · 6 comments
Labels

Comments

@alxlve
Copy link

alxlve commented Dec 28, 2024

Bug Description

After upgrading from 2.4.2 to 2.5.0 I get this launch error:
[1] 76088 illegal hardware instruction ./Mixxx

It seems that the new build uses AVX instructions. I use an old MacBook7,1 to run Mixxx as I don't want to bring a shiny device to parties or even at home with friends. Damaging on old computer playing music (which is still power sufficient to run Mixxx) would get me sad. Furthermore spilling accidentally a liquid on a shiny unit would get me mad. Hence I keep using a worthless device to run with.

The CPU of this computer has no AVX extension and can not run Mixxx anymore. I do believe that I won't be the only user restrained from using their old laptop with the new Mixxx releases and not their current work one.

I see no benefit using AVX instructions for Mixxx (unless there is now with the new features) and maybe this AVX requirement came out from the upgraded dependencies of the project. If there is a way to compile the project and its dependencies with a no AVX flag please do and distribute a non-AVX Mixxx release for macOS.

Hardware Overview:

  Model Name:	MacBook
  Model Identifier:	MacBook7,1
  Processor Name:	Intel Core 2 Duo (P8600)
  Processor Speed:	2,4 GHz
  Number of Processors:	1
  Total Number of Cores:	2
  L2 Cache:	3 MB
  Memory:	16 GB
  System Firmware Version:	68.0.0.0.0
  OS Loader Version:	540.120.3~37
  SMC Version (system):	1.60f6

Version

2.5.0

OS

macOS Monterey 12.7.6

@alxlve alxlve added the bug label Dec 28, 2024
@JoergAtGithub
Copy link
Member

We had to raise the mimimum supported macOS version to 11. And according to Apple, macOS 11 is only available for computers with AVX or ARM.
You report, that you are running macOS 12 on this old system. Is this a normal Installation?

@alxlve
Copy link
Author

alxlve commented Dec 29, 2024

According to the Apple marketing or sales department probably not, according to many owners and users of old Apple models yes.

I installed macOS via OCLP: https://github.com/dortania/OpenCore-Legacy-Patcher
Please take a quick look at this widely supported project.

OpenCore Legacy Patcher helps users to install maintained macOS versions on now unsupported devices by Apple mainly through the injection of missing drivers (that were made by Apple and included in former builds) to support old Macs. OCLP user's base is still growing.

I used the official macOS installer published by Apple, OCLP helped me install macOS Monterey on this old device, drivers have been added to boot but you can consider the build to be clean as no modification have been made to the system.

I run a lot of modern and updated apps on this Mac, everything works except programs that need a Metal supported GPU or programs that rely on AVX instructions (which are pretty rare). On less obsolete hardware, OCLP allows users to run the latest versions with no missing feature. Mine has an old CPU and GPU that can't be upgraded and OCLP can't fix anything for that purpose.

On this same machine I also have a Windows 10 boot partition and Mixxx 2.5.0 runs fine. Hence my doubt about the need to make Mixxx require AVX instructions support on the macOS build if it does not really relies on AVX instructions in its code internally.

@Swiftb0y
Copy link
Member

Swiftb0y commented Dec 29, 2024

It would be good to have a backtrace so we know where the AVX instruction occurs. If it happens in Qt for example, there is not much we can realistically do about it short of compiling Qt and many other components from scratch. That would not be realistic.

Regardless, your machine is still very old. I wouldn't expect mixxx to be much fun on a CPU that slow.

@Swiftb0y
Copy link
Member

Swiftb0y commented Dec 29, 2024

Have a look at the wiki for finding out how to create a backtrace: https://github.com/mixxxdj/mixxx/wiki/Creating%20Backtraces

@JoergAtGithub
Copy link
Member

No backtrace needed, we set the flags intentionally according the Apple documentation.

@daschuer
Copy link
Member

The flag of question is here:

https://github.com/mixxxdj/vcpkg/blame/74ff6c7ceb657e9f099626b5834884184209bf50/overlay/triplets/x64-osx-min1100-release.cmake#L20

@alxlve It would be easy to remove it in a non avx branch and create the vcpkg environment. Than use is for Mixxx. You may do it in a private branch, because officialy maintaining it is probably not beneficial for us as a project.

I think we never did abc benchmarks. It could be interesting how auto vectorization will use avx. It will have an effect on the Mixxx latency, but is it significant?

If it is a case we may consider to enable AVX for all targets and make it conditional.

Do you have interest to push this forward?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants