Debug in VS2022
-
@DanH Why are you taking photos of your screen instead of screenshots?
-
@d-healey it's not my main machine and the internet is dodgy on there at the mo
-
@DanH Ok, just checking your sanity, I thought the debugging might have got to you :D
-
-
@DanH so a quick google suggests this might have to do with the queuing and de-queuing of threads. What kind of threads should I have going on normally...?
-
That‘s just an assertion that is telling you that the UI notification queue is full (which might happen if the user preset restores multiple hundred controls). It‘s not an critical error though so if it keeps appearing, just remove that line and rebuild to silence the message.
-
@Christoph-Hart Ok thank you for looking! This is what came up with the crash and the call stack is the same as when the plugin crashes (in the error report).... Could this lead to the source of the crash?
-
@Christoph-Hart been running the project again and run into this twice now:
void PoolBase::DataProvider::Compressor::create(MemoryInputStream* mis, ValueTree* data) const { ScopedPointer<MemoryInputStream> scopedInput = mis; static zstd::ZCompressor<SampleMapDictionaryProvider> dec; MemoryBlock mb; mis->readIntoMemoryBlock(mb); dec.expand(mb, *data); jassert(data->isValid());
-
@DanH in XCode I'm getting this:
if (mc->getKillStateHandler().isAudioRunning()) { if (mc->getJavascriptThreadPool().isCurrentlySleeping()) return true; // The audio engine is not suspended. Wrap this call // into a killVoicesAndCall lambda. jassertfalse; return false; }
If anyone has any advice at all about errors or debugging please let me know!!
-
@DanH Try stepping through the code (also going back through the call stack) to try to figure out the root of the issue. Does this actually cause a problem in a release build or is it just showing up in a debug build?
Try to recreate the issue in a minimal project.
-
@d-healey so the issue is crashing when switching presets. It could be any preset at any time. So rather than click through every preset (which I've done a lot of!) I made a timer which selects the next preset in the list every 2 seconds.
-
it's least stable running the debug within XCode / VS2022. I get call stacks I haven't seen before here.
-
The issue appears in release as well - hence the debugging.
-
So the error could be in the call stack and not necessarily the final file it points at?
-
In standalone builds the debug and release crash in the same thread (JUCE Message Thread Dispatch queue). The crash reports look different - I don't know how to reconcile this, in the sense that the numbers (e.g 0x10a2d7084) are different, but it's my assumption they are pointing at the same thing?
-
-
@DanH Remove half of your presets and see if the problem is still there. If it is, remove half of the remaining presets and test again. Once you figure out which group of presets the problem one (or more than one) is keep repeating this process on that group until you find the culprit.
I suspect the problem isn't a specific preset though and something to do with the way your project handles one of the controls that the preset is restoring.
Yes the root cause of the issue isn't necessarily at the last point the call stack made it to. This is why you need to set break points and step through the code.
-
@d-healey Yes I don't think it's specific presets as it does seem random.
Ok how do I set break points?!
-
The same way you do in HISE ;)
Now is the time for you to go to YouTube and search for Debugging in Visual Studio.
-
@d-healey you mean set break points in the source code?
-
@DanH I'm not sure what you mean. Break points are a feature of the IDE. You add them by clicking in the margin (I have a video on Patreon about HISE breakpoints).
-
@d-healey ok let me do some research, thanks for all the help!
-
Right so through trial and error I've narrowed my bug search to the script below, which is to do with Macros.
I've made a mini project with the same script and modules etc, plus some presets for browsing through (which is where the crash happens) but I can't replicate the issue in that project, only my main much larger project.
Does anyone have any ideas on how to progress? If I have either part of the script (so either declaring the front end macros, or the laf script - or both) my project crashes. I'm not sure the stack trace is helping, but I could be wrong!
/////////////// MACROS ////////////// Engine.setFrontendMacros(["LFO1", "LFO2", "STEP", "X", "Y"]); laf.registerFunction("drawNumberTag", function(g, obj) { var coloursmacros = [0xFF78016F, 0xFF006868, 0xAAFFCA00, 0xFF7B7B7B, 0xFF7B7B7B]; obj.area[0] += obj.area[2] - 15; obj.area[1] += 0; obj.area[2] = 14; obj.area[3] = 14; g.setColour(coloursmacros[obj.macroIndex]); g.fillRoundedRectangle(obj.area, 4); g.setColour(0x73D6D6D6); g.drawRoundedRectangle(obj.area, 4, 2); var letters = ["1", "2", "S", "X", "Y"]; g.setColour(0xFFE3E3E3); g.drawAlignedText(letters[obj.macroIndex], obj.area, "centred"); });
-
Duplicate your broken project and start removing stuff systematically until the problem goes away
-
@d-healey I’ve just done that. Which is how I ended up at this script. Unless you mean removing ui objects?
I went through each section one by one switching the ui objects save in preset function to off until nothing was save in preset and still I had the crash. I removed all scripts one by one until I hit this one.