-
Notifications
You must be signed in to change notification settings - Fork 404
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
SurgeXT/Linux crash on startup #4479
Comments
Huh wow so I ran this yesterday on linux before I moved the branch. Can I ask a couple of qs 1: there were a lot of changes in the main branch. Are you sure you did a clean build? I wonder if make got confused with a force push but I can look this morning and see if I can repro. That stack doesn’t tell me much I’ll be honest! thanks! |
OK so I just tried a clean build at head and it works here:
I also removed and super had a surge standalone, connected to jack, etc.... One thought: We turned on compile flags for AVX a day ago. Are you running on a CPU which is pre-2011? |
yes it was a clean build. |
and yes the cpu is pre-2011 |
Well that will be it I’m sure. I bet gcc is adding an avx extension and that’s why you get a sigill What a pain. Ok I’ll think about what to do today |
Have a plan - I will make a branch for you to test today and update this issue |
OK @mynameismuhl I have an idea what to do. Can you try a branch for me and if it acts the way I think it will, then I will turn it into a mergeable branch? So if you can here's what I'd like you to do. Basically pull and checkout my branch 'avx-test' from my baconpaul branch. This should let you build surge standalone which starts.
If that's what happens then I can revert the AVX build and restructure it when I add the primitives. If that's not what happens then it is a bit back to the drawing board. If you don't do a lot of multi-remote git work here's the exact commands
which should get you there. Thanks for this report! We all really appreciate the early testing you are doing here. Great stuff. |
yes, that does exactly what you described. |
OK fantastic. So then I know exactly how to solve it. What I did basically was
that stops the sigill in the startup path but still lets me swap into and out of AVX at runtime. Which is exactly what I want. Just documenting this here since I'm going to leave a pointer to this issue in the CMakeLists when I turn off AVX-compile-time-all-units in main now. |
Blanket -mavx means that static initializers add avx intrinsics and what not. Instead we want to use a conditional approapch through splitting up libraries and only compiling the necessary program units with -mavx as described in surge-synthesizer#4479. We haven't done that yet, but we will. So even though this Closes surge-synthesizer#4479, there's still work to be done when we use AVX for the first time.
Blanket -mavx means that static initializers add avx intrinsics and what not. Instead we want to use a conditional approapch through splitting up libraries and only compiling the necessary program units with -mavx as described in #4479. We haven't done that yet, but we will. So even though this Closes #4479, there's still work to be done when we use AVX for the first time.
OK I merged back to main so you should start without a sigill now its possible in the xt cycle that we use AVX to improve the performance of one or two spots in the code but we can keep the non-avx branches alive the about screen should show you something like '(no AVX)' next to your processor name too. |
great. works. :) |
Linux 64bit
commit 52bc67e
Stop reason: signal SIGILL: illegal instruction operand
call stack (lldb):
call_stack.txt
The text was updated successfully, but these errors were encountered: