-
Notifications
You must be signed in to change notification settings - Fork 12
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
A plugin from V 0.62 cause crashes in Ubuntu 22.04/Reaper #54
Comments
@maxxatgit Are you using the plugins from zip file on the release page, or built from source code? Probably the plugins in zip files only work on Ubuntu 24.04. I set Edit: Fixed the commit link. |
Yes, I'm using the plugins from the zip file. |
Yes, it's possible. Instructions are below.
On step 3, delete all texts in the original on: push
env:
package_path: package
jobs:
build-ubuntu:
runs-on: ubuntu-22.04 # Ubuntu version can be set here.
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Run script
run: ci/ci_ubuntu.sh
- name: Upload
if: ${{ startsWith(github.ref, 'refs/tags/') }}
uses: actions/upload-artifact@v4
with:
name: vst_ubuntu
path: vst_ubuntu On step 4, following commands trigger GitHub Action. Assuming that the remote name is set as git add -A
git commit --allow-empty -m ""
git push -u origin master After the workflow is completed, you can find the plugins in a bit deep in Action tab in your forked repository. I will not setup the build for older versions of OSes, because I once got a warning related to the storage limit on GitHub. |
Closing due to no response. |
Hi, me again. |
OK, I figured it out. I ran the action, but I cannot find any artifacts from the build. |
Ah, sorry. There was a mistake in the step 3. Following line is unnecessary. if: ${{ startsWith(github.ref, 'refs/tags/') }} The above means that the actions below that line are only triggered by Git tag. So following commands should also work. Text editor, likely vi or nano, opens after entering the first command ( # bash
git tag -a trigger
git push -u origin master --tags |
That did it! I was able to build Ubuntu 22.04 specific binaries. reaper: ../../../../src/cairo-xcb-screen.c:219: _get_screen_index: Assertion `!"reached"' failed. I hope that is a helpful error message. I Really like your plugins, I hope to get the latest set working. |
I did a search for that error and found this (from a U-He dev): |
Pretty sure I saw the same error at one point, and the way it crashes sounds similar to #16 (related: #14, #35). I also filed a issue (steinbergmedia/vstgui#249) to VSTGUI and it was seemed to be solved at that time. If I understand correctly, the crash happens when the plugin window is repeatedly opened and closed. My apologies. I didn't know better and had to be avoided using VSTGUI at all. It caused so much trouble years after years. I wasn't experienced at C++ programming at all when I started this repository. I was about to say that rolling back to VSTGUI 4.9 might solve the problem, but I remembered that they changed API after 4.9. So I can't think of an easy workaround that doesn't change the existing C++ code. Sorry again for inconvenience. For now, I'm not sure how to solve the crash issue without breaking existing user projects. GUI library must be changed but I'm not sure which one is the most suitable (which means easy to static link and low maintenance). I'm currently looking at tcl/tk. I'll work on this as a next milestone. It will take time. |
I appreciate your good work, and responding to my questions/issues. In Reaper, I can turn the GUI off. That may be the solution for now. |
FYI, I got the same crash with one of my own plugins: I made a fix here: |
@madah81pnz1 Thank you. I was closely watching your issue on VSTGUI repo. I have a comment on remaining ref counts. Any chance you are using the pattern linked below? Suspicious places are:
It looks like |
@maxxatgit The patch of @madah81pnz1 might solve the problem for now. I'll provide steps to apply it. Please let me know if it works or not.
git commit -am "Change cairographicscontext.patch"
git push -u origin master There's already an existing patch for |
I'm not using vst3editor.cpp, my plugin is based on https://github.com/surge-synthesizer/clap-saw-demo/blob/main/src/linux-vstgui-adapter.cpp There is no code calling RunLoop::Impl::setDevice(), so the device raw pointer in RunLoop::Impl is never used. I think the code using it was removed when CairoGraphicsDevice was added, and CairoGraphicsDeviceFactory is supposed to take over the ownership of the device instead. There are other places, like CairoGraphicsDeviceContext::Impl stores a reference to the CairoGraphicsDevice, which I find a bit dangerous. But seems to never be used either. |
@madah81pnz1 Sorry for making confusion, I was probably talking something irrelevant. clap-saw-demo looks quite different to my usage of VSTGUI ( |
@maxxatgit I found an interesting bridge plugin that might be used as a workaround. https://github.com/robbert-vdh/yabridge It says to be using Wine, so it might not work. One of the reason I gave up Linux is that my old FL projects couldn't work on Wine. Some of the plugins in the projects didn't work. (Maybe it was related to SIMD, as one of the crashed plugin has "SSE" in their name.) |
@maxxatgit I'll communicate my failure early. I probably can't solve this issue in foreseeable future. Replacing VSTGUI is far more involved than I thought, and if I do it I will likely introduce more bugs than fixes. I'm lacking the skill. More details are on issue #58. I'll leave this issue open. What's lacking here is a cross platfrom GUI library that is specifically made for audio plugins. Or some friendly tutorial about how to integrate a GUI library into VST 3 SDK. |
@ryukau Thank you for your attention on this issue. I will try the cairographicscontext.patch fix you suggested in a few days. I'm super busy right now. I don't use wine... only Linux native plugins. Please excuse the noob questions, but, is Juce a viable framework? If not, what about CLAP? CLAP is cross-platform, and is an open standard that is not controlled by large corporations. |
@maxxatgit The reason I'm not using JUCE is that it was lacking a feature I use frequently. The feature doesn't have a name, but I'd call it "fractional pitch at note-on". Without it, I can't do something like the video linked below (note delay with pitch shift). 2025-01-15.10-06-20.mp4CLAP is not a solution to this specific issue. Changing plugin format breaks existing projects which I would like to avoid at any cost. That said, I'm considering to write my new plugins on CLAP. It's that I'm not sure what to do with this repository, when it comes to fixing this issue. The reason this repository is targeting VST 3 is that there was no option other than VST 3 when I started. It was the summer of 2019. VST 2 was deprecated right before I started, and FL Studio at that time only supported VST 2, VST 3, AU, and FL's own plugin format. |
@maxxatgit I decided to move to JUCE. I won't migrate plugins in this repository, but maybe make improved version for some. |
I setup Ubuntu 24.10 virtual machine. The video below is showing the issue. The patch from @madah81pnz1 is applied. It still crashes sometimes, and the text disappears randomly. 2025-01-22.12-13-45.mp4 |
@ryukau I appreciate what you are doing to solve this issue. Thanks for all that you do! 💯 |
@maxxatgit A patch to partially fix this issue is available on the link below: To apply the patch, please refer to this comment. The filename of the new patch must be changed from It seems that crash still happens in some cases (link). The condition is not clear, but opening 2 windows of the same plugin might trigger the crash. I'd recommend to save often, and to write the result to a file by using freeze or bounce feature provided by your DAW. |
I was forgetting to mention some quirks. XY pad may looks weird as the black circle is large. I once provided a fix, but it is ignored for like 5 years at this point. There's also other fix on the link below. |
This issue opened from the linked comment on another issue.
#35 (comment)_
The text was updated successfully, but these errors were encountered: