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

[BUG] 2.11 crashes on x64 Windows #284

Open
kiwijam opened this issue Jul 22, 2022 · 4 comments
Open

[BUG] 2.11 crashes on x64 Windows #284

kiwijam opened this issue Jul 22, 2022 · 4 comments
Assignees
Labels
bug Something isn't working

Comments

@kiwijam
Copy link

kiwijam commented Jul 22, 2022

2.11 VST2/3 and standalone crash for me, previous versions worked fine.

My CPU is limited to SSE2, in case build flags have changed since 2.10

Unhandled exception at 0x00007FFC5C3E168E (CHOWTapeModel.vst3) in reaper.exe.9000.dmp: 0xC000001D: Illegal Instruction.
Unhandled exception at 0x00007FF72937E9DE (CHOWTapeModel.exe) in CHOWTapeModel.exe.4340.dmp: 0xC000001D: Illegal Instruction.

@kiwijam kiwijam added the bug Something isn't working label Jul 22, 2022
@jatinchowdhury18
Copy link
Owner

Interesting, yes I think the CPU being limited to SSE2 is likely the cause of the crash. Probably the simplest way to know for sure would be to check if the crash still occurs when building the plugin locally.

No compiler flags related to SIMD instructions have been changed since the previous version, however we have switched from using JUCE's SIMDRegister to the SIMD intrinsics provided by the XSIMD library.

What's strange to me is that I had thought the previous versions of the plugin would have required SSE4.1 or higher, so I'm puzzled as to why the previous versions did work on your machine. My best guess is that even though I was compiling with the compiler flags for SSE4.1, the subset of JUCE's SIMD methods that I was using weren't actually calling any instructions that required higher than SSE2.

Anyway, in that case the question I need to figure out is: do we drop support for CPUs that don't have SSE4.1, or change the compiler flags to support SSE2, even though that could have a performance impact for users with newer CPUs? By the way when I say "drop support", all I mean is that we wouldn't provide pre-built binaries in the official releases, just like we don't provide pre-built binaries for Windows or Linux ARM devices, or 32-bit Linux devices. Just like with those other platforms, folks with pre-SSE4.1 CPUs would be more than welcome to build from source.

@kiwijam
Copy link
Author

kiwijam commented Jul 23, 2022

Great success! I followed the build instructions and compiled a binary with Visual Studio. That one also crashed Reaper. I then went into the solution file and changed all toolchains to LLVM-clang instead of Visual Studio's compiler. That plugin appears to be working fine. I would not know what to change to get a working binary out of Visual Studio's own toolchain though.

@jatinchowdhury18
Copy link
Owner

Oh interesting... I can't think how switching from VS to llvm would change the SIMD instructions being used. I wonder if there might be some shared library or something that the VS runtime is looking for and can't find on your machine. And then the llvm build is working since it bundles the library in the executable? Definitely a bit of a mystery... in any case, glad to hear the plugin is now working on your machine!

@Moth-Tolias
Copy link

i think i might be encountering this in wine with openMPT - it crashes the whole application when trying to open [my memory is poor but i think i saw an illegal instruction message in the terminal]. happens with BYOD too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants