Crash on MacOS in compiled plugin when working with HardcodedEnvelopeModulator
-
I'm getting this on MacOS Sequoia 15.5 and all DAWs.
This is the most basic example I can come up with.
Here is the project snippet.HiseSnippet 1352.3oc2XstaaaCElJNLKwYEXsqCcX.aPHX+vcnKvxw4FFFpy8ZrlDiXuzh8mBZIZahHQJHQklrg8rs8HrGg8Hz2fsCEssnRbbSMlaSW9QP3gmC4QmKeeGlFQBWZbrHBYUr0kgTj0mhadIW1amdDFGUeWj08vs8I7yB8S5BR19xPRbL0CYYU3.kJVKLKJ8m27zsIfhtzLQHzoBlK84r.lLSZiZ+Dy2eehGsEKvP6p0p6J36H7EIf6T.WFERbOizkdDQo1LXzyHw8PVeGd8Moq2d8UqtQkUHa533VYSO2pUJux5q5Uo5Zq0tryJqTci1qirlaOOlTD0TRjzXj0raK7trYOwq45K3TVLqsOUsvA0DtYs38E9dpOQkTzN8X9dMFDmhQvg1HKpUPG0dH9PlGan7rn2mktgclElAPqYx6dEx4dNltWYC2aDtjkgKMq1ktOtoaDKTlsixeVDWmKoQcHPdxzUz5hlokEdGAnAWtb.4L59QvhgVTZsxkehM7qG+CEKB4pXo84jH6mQh7bEPDaO94TeQH8PgWhOA9vbr+Q6zxok6RkM8Ex8eYokFi5KAG7X1d4XpbuNcntxRKocXPminxWKhNCLsSB2UxDbaA+HgjdLuziK9aEWn3uWz9pa0oyH2S8oGI78oQibaU8Zz3LrDOInMM5IPXwOgNTQHmjOQiu4DsYcnqNSXnnfWmyjGGR42T0Ipe5C9qet9tDIQUczWFnWHMRxTtf0tzygdScsxB3cowmIEgP240JjfR3AY.y5ZU2e+MfXPthIUACOlIuzDc3+rh8aqKdebClzs2n8wYFgOBQpogO1Gh3dXcoalCNKd+WNcvCLu940W+WgOvWzl3mEnfZBvSnZbgut+11C22dnBNiA0+utsn9g2ZT+q1rL6sqY4s.ZO6cNP6aac7mesTS76wtsbTK8qk9F7PPZ6AnzYdW+5owfimy8OTvEg8DblqYIzITYDqaWn5zb.CVnvmDciez8oBPVO.eU5g2kVamoO7Sg+eC+bhHQx3cOj.IwK.5tiRBZB82tT314bpuhBzZFEYkdcY0ZUDnIk6kt3efe5uoiZsU+McFrIRe3FLbbZJaLx5SZQhf4Mp6o5czpYaT7A+4vzrxmpy8nWn+TLxJKhKu7pqrYUXnRzVIWzWo4veuyxk0BFpJFTUY64.2pFApbtLvizYfEwufbNMcbnz3+WjttiHJv9.J.yd8VioNT6wtRvEZEQ3wghXpi4I2jFvZI3z3bRuhEUFoE4jtKUlvyezZQ4zREJ1GBEF5MesABqXJrAgm6vf04NoCUUbCV92OcONApYaRgubuiicg.SJFkApQiD+X5KXdxdNlFlIthoXErFjCyAVYUXZvXM2GsLVe.GNLGc0BC7wlrfPe5.hnTe7AvHucHI9xARmXVoQ9AskTBOdMSxCqcB0mRhMZG+1ZOGlthDowilnXgy67qBGY95KwZ20VgWX+w6P8SYV0bwyhCdkslfI+zOih1YJMyyNIwRQfhqaFL5T0yNyAIGHDxd.Ubdlf50tJj0jONT5cdBg2kpB004gIR8JKbfI8Uo+LfXfLWpVFgoUgXIMrI6Wy0GzhdgDn0SUJRQep3WjJ9EfFJQdS2ya9ib2ip+bb2C7L4XJ.d1P.QVndZq3egFITuP7Nza3FOX6gYEZ2MaZeDFXdqXm14Z+gYf32GSj993NBHtQhW4p+2MovjlOUB7cyS+ujt.f7.qscPmeUrf.XBgW45l+ntlgUlTCWYRMr5jZ3pSpgqMoFt9jZ3FucCUCvsUBfkq6MfAYarW5qarrzyvl1lf9W75mYoO
Make sure to compile DSP networks. Then re-load HISE and compile the project to create a VST3.
The script does this:
const var HardcodedEnvelopeModulator1 = Synth.getSlotFX("HardcodedEnvelopeModulator1"); HardcodedEnvelopeModulator1.setEffect("ScriptEnvNetwork");
Essentially what we have is:
- Global modulator container
- Hardcoded envelope modulator - with a ScriptEnvNetwork loaded into it (consisting of an oscillator, sig2mod, and peak node) compiled to 1 channel (mod sources need 1 channel from what I can tell)
- Waveform generator
- Matrix Modulator assigned to pitch of the waveform generator.
The interface script sets the HardcodedEnvelopeModulator to the correct network by using the setEffect() method.
The HISE project works fine on Windows and MacOS. The plugin will compile on Windows and MacOS.
But on MacOS, the plugin will crash the host on plugin instantiation. Seems to be a null pointer or dangling pointer issue. The crash does not occur on Windows, from what I can tell.
-
Is anyone else able to reproduce this on MacOS? Just curious if it is a me thing or not. I can't think why it would be mind you.
-
@Christoph-Hart Did you get a chance to look at this?
-
This post is deleted! -
@Orvillain just checked, I couldn't reproduce the crash:
- which host are you using? Can you reproduce this with the minimal JUCE audio plugin host?
- Does it crash when running under a debugger? If yes, then giving me the location will get us to 80% of solving that.
- Can you post the exact script node network? I'm plugging the modules you mentioned there, but no crash (also as a side node you don't need the peak node, the modulation signal is being calculated as the audio signal).
-
@Christoph-Hart said in Crash on MacOS in compiled plugin when working with HardcodedEnvelopeModulator:
@Orvillain just checked, I couldn't reproduce the crash:
- which host are you using? Can you reproduce this with the minimal JUCE audio plugin host?
- Does it crash when running under a debugger? If yes, then giving me the location will get us to 80% of solving that.
- Can you post the exact script node network? I'm plugging the modules you mentioned there, but no crash (also as a side node you don't need the peak node, the modulation signal is being calculated as the audio signal).
I'll check it out. I've debugged HISE standalone, but not yet debugged a plugin inside a host, so will need to go and figure that out.
-
@Orvillain I think someone here mentioned debugging plugins as standalone apps; I can't find the exact post but the steps are
- Export > Export as Standalone App, then close the terminal window/cancel the process.
- Open the generated Xcode project /Binaries/Builds/MacOSX/(PROJECT).xcodeproj
- Compile/debug
I can't get your snippet to crash with a osc-sig2mod-peak node, but I'm getting the crash reliably with hardcoded fx and am pretty sure it's the same root issue.
HiseSnippet 1938.3oc2Ys0aaaCEVJ1L25k0r1ULLfA3G1CoacARx2wdno4haMVt3U6lUf8P.iLUrPjH0jnSS1vdeuseS6ev9oz+AaGJJYQ43l35lFzNUf.Sd3g76bNemCuzNgLaRTDKTSe4dmGPzzuMp64T9fMGfcoZs2RS+tnH6P2.tyYbRDWaiyCvQQj9Z55EdlXL5KUTK96MOYCrGlZSx5RS6.lqMYGWeWdVucV+Gc87Zg6S545qL5Jq21lQ2j4wFB3o.xPK.aeB9XxdXwvlCo8bbz.M8uE4XZVwoZix1VGQbNx11whPbZTsV0ZF8q6Xa07HqZ052zVSe9s66xYgc4X.8Z5E2f0+7tCXulJWfCbibOxiHZXp0EVYY2sXd8ElnnWsMG350uSpiJRClzNYtsBR21CP6512cT+Ytu6EKnTlFpNP84xCuB4fmoJ7LTf2DfjtBjJJgzJntwAtLIB7bKTaJmD5fg3jJTjiUS+uQaxfAP4q4iOgzJDZLRgUqYX73RvedzOrryPpM2kQKwn6w3j8oq9nk+8kWZ4+X4RiKxwYhxDqSHyyiDNQwBtQ3ko3pzg9GQBeboSwdCIiFHX+4cpn2tSUMlaKMakAxnsot78CHz2FSPKwWA+5ks2BywhHQRev3BHgbWADz2hbJjGHiKKg1hDcBmE.YBWHnAzEV+gdXddNjHSKQ.3CxE3DQGZjK+b0LwwIVEmNh0ky6mV3tBpiK2dvjw6bS.ufW6CMdSRSuCZaGGhMOCrEQsd0klSdsCkEkP4qPOyicD1KyAB7F.UDYd5WmHtzH4kFM.yKoJ7+LsUgCl5pvimPUb5RnthhnE+nqH5zxuu+EBMQu6YjWOk5WQBSDZmV6m3ofekALyqFXa3Fv7vgB4sBI+5PB0VQ9hqKXHsyHXq+Wq+y3SINrP+jxYilocHGCqoZO8H9AL37D1pjwt9LFefK8377tGr9NLVv1TL3E5qNIcFfiDahDQ34lFXZ6w1EGAaNsoGy9DUgsOlxBIxMlT6eygQblepADelhtbRPboa8eAUqxZvmy2I9ayMg+Td+qm1ZuCgeyKO7O2TyRELgQgbAm3Fjkp8NgxQDuORQ4ktiVgoZGsqELN66hM6K+KXC4Px5tXdn6YPol8F52E1Zvl.qNkR7DmvReNQtkrsgncbBJg1Otw+BeIBMEs0SDZlJTSN4xCPoZu2UZu2B0E11K9dIwV6CiaWRjFW5YDXCwKVp6C9lh6aygkuWHlFEvhxMwcI9t8XTgaOqyWFQDr7WHnO4pHwvgSTzadRKvHmnNcw7ggw7vm5yFRyUVTuvmTaVeidvz2+yQe8rq8RoXrqqefGYa5oDO3xBwX7ygaG3fG5wS6MOudWFkELfQcysk5KHP9ywGSBUw9DMnmx4X0sJev5uf3QvpD3uY8c.hGND7SjYzWX9NeY0IFu9RjDtkDIik9+w8eJ7o18etVCyKm7lDvZJV7amzrTqWYNwWi3OQYW7OHjDfCI8Xc7vmuZDVj5.kFIOtzQhi+0082HW70BBjPXCwHV0NYGqY4QEl+ll7uHZ6y3gXyaxiCcSrWe1SlrGg+ZV3IwNkjeClsjWHeywCcNyT6oddrWuIyOvMIaJ1ndNNpG10K4Y7HgQwRV.YrF7OoNcXdmmVqTufbFRsjzMNklSVp5FoToQV1vn..+6S6BJGeBBHEQeu3ZiKzBaC98y6fgCl.o81oWPeM6QgwblRVnTfZ4yZla.hnVGbHH.tUSjzREqU5IOjXBLEegKTb8E8BB4wWLPBp4kuxmOrGrDE4.4Wn.xrgLIboNESKDzyAAhf+dnObh9bP3d.DBIqkIcxqdl7qX0KlE85gCOlviRdENJwVxWh8Ls6KtmbzoNZibvhttEJ6VuZJtdwEsRaAJtqK8.QEAwbHHX6hOKo87HyZPGhqQlvaPlPagKXATaZexYZ4zTa5lV4rLoY8yPI4rccOlh8Fa1EzbOxYoOF4VtQAP4xMFBk8kkex0CzVBQXefu2LdGizGsLu2Hmj3ZXhVPYn4jj71QGHjZmgGHwRgMH8743A2A435Il80DhlDIPpzUQ9FyhaImzredAaTMHOuRzXgrnw7Hq7gikfNfOQH4Dxqk1g3LvFqYY0roQkp0rrJWoQ8FUSdk8LVUOfI2iEOO.o7TvMIVL0QjbhujkZQjobkd5PNyGJomtA+jIN2GvPYi3OSylVFMsZpf66iZtVilhuZlMpV1vpd4KZA0pT2rdCy5kMpU0rQsXKn.5mzxQEUW9hYK+BfOsw3IDMRnpyGef62G9+XPsrgogvXa1rQkl0MLSb1idRozk5ghYyno7qd8ZUZXUsg0zu1UdK4dyihOU70aB8RnzW8ZLG9aKYDx+TXsxDPYtjfSoMUzX3vEjP5nmeNtN4xHHW5HXug9WMK+pY04wfZE4YsdxL8+wxMwYZFaMVYhqwhuWqQhPKUMsFSXYUMKOlvJpZVYLgUU0r5XBqopYswDVWUy5i7H9X6P1g1xCUKBwKF2CTWgFWZeIzth1kL0NMgYN5tPhicbnsc9o5BJZMqJVdVUrxrpX0YUwZyph0mUEab0JJdbmjclDEMfCO2Ya46mqO5w60Kn8e.onlJU
This snippet uses a scriptFX and needs
HISE_NUM_SCRIPTNODE_FX_MODS=1
or more in the project's extra definitions. On compile+debug, it'll throwJUCE Assertion failure in juce_SmoothedValue.h:301
scriptFXstacktrace.txtIf you compile and replace the scriptFX with a HardcodedMasterFX, it'll throw
JUCE Assertion failure in ModulatorChain.cpp:2023
on compile+debug. Same error occurs with a polyphonic instance. hardcodedFXstacktrace.txtI noticed the modulation chain processes in the stack traces and figured our crashes were related.
-
@Goodflow Thanks for responding!!
This is my network.
I am recompiling and re-exporting the plugin now. Will see if it crashes.
-
@Christoph-Hart
https://www.dropbox.com/scl/fi/g5235ul4gkviziv0j6n8r/blankplugin.zip?rlkey=tdxaelcnteyrjy9i8de1bhkqu&st=uyke58pd&dl=0Here's a link to the project, in case it helps.
I'm gonna investigate how to get it debugged.
-
@Goodflow Your snippet does not crash for me. I think these are different issues.
-
Hmmm, I don't understand.
My 'blankplugin debug.vst3' file doesn't show in Ableton Live. But it did show in Reaper, and it loaded and worked.
My regular exported from HISE directly blankplugin.vst3 file does show in Ableton Live, but crashes it, and does not show in Reaper - presumably because it crashes validation.
If I build blankplugin.vst3 directly in xcode, then it won't pass validation in any host.
-
So far little success in debugging. But here's the Live crashed thread:
Thread 0 Crashed:: MainThread Dispatch queue: com.apple.main-thread 0 blankplugin 0x33ae250a0 0x33ab24000 + 3149984 1 blankplugin 0x33ae2cf20 0x33ab24000 + 3182368 2 blankplugin 0x33ac0b208 0x33ab24000 + 946696 3 blankplugin 0x33ac16b44 0x33ab24000 + 994116 4 blankplugin 0x33ac0b208 0x33ab24000 + 946696 5 blankplugin 0x33ac473d4 0x33ab24000 + 1192916 6 blankplugin 0x33ae3856c 0x33ab24000 + 3229036 7 blankplugin 0x33ac0b208 0x33ab24000 + 946696 8 blankplugin 0x33ac473d4 0x33ab24000 + 1192916 9 blankplugin 0x33ac7d1a8 0x33ab24000 + 1413544 10 blankplugin 0x33aedcc7c 0x33ab24000 + 3902588 11 blankplugin 0x33aedb610 0x33ab24000 + 3896848 12 blankplugin 0x33ab32294 0x33ab24000 + 58004 13 blankplugin 0x33ab29fa0 0x33ab24000 + 24480 14 blankplugin 0x33ab3de18 0x33ab24000 + 106008 15 Live 0x102c7d498 0x1006e0000 + 39441560 16 Live 0x102a9f240 0x1006e0000 + 37483072 17 Live 0x102a9ec2c 0x1006e0000 + 37481516 18 Live 0x102a9e448 0x1006e0000 + 37479496 19 Live 0x101a63a48 0x1006e0000 + 20462152 20 Live 0x101a63710 0x1006e0000 + 20461328 21 Live 0x101a72658 0x1006e0000 + 20522584 22 Live 0x101a47f9c 0x1006e0000 + 20348828 23 Live 0x102c85464 0x1006e0000 + 39474276 24 Live 0x102c05210 0x1006e0000 + 38949392 25 Live 0x102b9d63c 0x1006e0000 + 38524476 26 Live 0x102108904 0x1006e0000 + 27429124 27 Live 0x1021315cc 0x1006e0000 + 27596236 28 Live 0x1020cd940 0x1006e0000 + 27187520 29 Live 0x10212e870 0x1006e0000 + 27584624 30 Live 0x10212e4f4 0x1006e0000 + 27583732 31 Live 0x10212e6ac 0x1006e0000 + 27584172 32 Live 0x102f11b20 0x1006e0000 + 42146592 33 Live 0x103516720 0x1006e0000 + 48457504 34 Live 0x103516390 0x1006e0000 + 48456592 35 Live 0x101833c8c 0x1006e0000 + 18168972 36 Live 0x10157eabc 0x1006e0000 + 15329980 37 Live 0x10157e62c 0x1006e0000 + 15328812 38 Live 0x10178d7e4 0x1006e0000 + 17487844 39 Foundation 0x1949d0fcc __NSFireTimer + 104 40 CoreFoundation 0x1933e2e14 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 32 41 CoreFoundation 0x1933e2ad4 __CFRunLoopDoTimer + 980 42 CoreFoundation 0x1933e2610 __CFRunLoopDoTimers + 332 43 CoreFoundation 0x1933c8a18 __CFRunLoopRun + 1848 44 CoreFoundation 0x1933c7c58 CFRunLoopRunSpecific + 572 45 HIToolbox 0x19ee5c27c RunCurrentEventLoopInMode + 324 46 HIToolbox 0x19ee5f4e8 ReceiveNextEventCommon + 676 47 HIToolbox 0x19efea484 _BlockUntilNextEventMatchingListInModeWithFilter + 76 48 AppKit 0x1972efab4 _DPSNextEvent + 684 49 AppKit 0x197c8e5b0 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688 50 AppKit 0x1972e2c64 -[NSApplication run] + 480 51 Live 0x10178cbb0 0x1006e0000 + 17484720 52 dyld 0x192f3eb98 start + 6076
I suppose it isn't terribly useful, but pasting here anyway.
-
If I unload my hardcoded network, and comment out the .setEffect() call that sets it, then it does not crash.
I don't get this behaviour on Windows again by the way - that nework, whether I need various elements of it or not, compiles fine and runs in the DAW fine.
If I leave the realtime script node modulator in, instead of a hardcoded, and compile the plugin, the plugin does not crash, but the network does not seem active either - I guess it gets unloaded when compiling?? Never been 100% clear on the expectation there, I've typically just tried to compile my networks as soon as possible.
-
If I remove the Peak node in my network and compile, I get this:
It seemed previously that my network needed 1 channel to be able to be used as a global modulator. Is that correct?
I will try compiling with 2 channels, although it is saying it is expecting -1 lol - why?!
-
@Orvillain yes, modulators are monophonic signal generators so they need to compiled with NumChannels==1. -1 indicates that something else went wrong, but it's hard to guess from here.
Oh and I would recommend to check out a better host for testing than a full DAW (unless you specifically need to debug a certain bug that only occurs there), as this vastly accelerates the debug cycle. Check out the JUCE plugin host - you might have to build it with the VST3 SDK from source, but this is a really minimal host that you can directly launch from Xcode and if you save the plugin setup within the host, it will automatically restore it whenever you launch Xcode.
I suppose it isn't terribly useful, but pasting here anyway.
Looks like a release build without symbols, so yeah not much to gain from this.
-
@Christoph-Hart I have the JUCE minimal host, but whenever I add this test plugin to it, it crashes on scan. No useful log out of it.
How do I build a debug version of my plugin? Open the xcode project and change the run target to debug? There isn't a way to do one from inside HISE directly is there?
-
Right. So I emptied my Scriptnode network. Completely. Just a blank network. Compiled it. 1 channel. Re-launched HISE. Re-exported my plugin with the hardcoded network loaded as a global modulator.
Still crashes. I don't think it is to do with the contents of the network. Just the fact I have a hardcoded script envelope modulator in the global modulators altogether.
If I remove the Matrix Modulator on the waveform generator, but keep the global modulator (again, hardcoded envelope, but the network has nothing in it) and it still crashes.
At this point, I can only assume it is a configuration issue, or a HISE specific crash that I'm not describing well enough for you to reproduce it, Christoph.
Only other thing I can think is if you take my dropbox project above, compile the network in HISE on your Mac, and export the plugin your side and see if it crashes ???
The moment I remove the global modulator hardcodedenvelope instance, the plugin will load in any host.
FULL SPECS:
Macbook Pro M1 (2021)
MacOS 15.5 (24F74)
Xcode version: Version 16.4 (16F6)
Hise commit: 162f714b4b49264abf8081199ae9fe2d46c8a040 -
I opened the blankplugin xcode project. Set the scheme to debug. Compiled the plugin. I get blankplugin debug.vst3 out at the end, as well as blankplugin debug.a library file. Copy the plugin to the plugins folder, make sure the old one is no longer there.
It shows up in the DAW, and it does not crash.
Sooooo... debug version not crashing.... release version... crashing. That I don't understand.
-
Yeah man, this is wild AF. The debug version works fine - even the hardcoded global envelope modulator is working.
There's something skwicky with my release build. Maybe I compiled HISE with a flag or setting, set incorrectly....???
-
Turning off link-time optimization in the xcode project seems to stop the crash from happening. It was originally set to 'Monolithic' for release, and turned off for 'debug' so that explains why debug was working and release was not.
I'm trying to build a release version with symbol support so I can see what the heck is going on.