Need help deciphering crash report

I turned on predictive loading and now GP is randomly crashing when switching rackspaces. From all I can figure out it’s saying GPScript is the cause but that seems fishy.

I’ve attached the crash report.

Untitled.txt (552.2 KB)

I‘m also crashing GP with scripting, only in combination with predictive loading for specific rackspaces.
Unfortunately, according to my tests, unresolved until the current version.

This looks like it has something to do with getting a widget label or a value of a mapped parameter.

What part of the script has a function like that?

So, all my rackspaces have 2x Valhalla Delays and a Valhalla Shimmer in them and I retrieve the text value of several plugin parameters (like the delay mode) in order to dynamically map widgets to different parameters. Normally that remapping only triggers when a slider widget moves, but I suppose that happens when a rackspace loads and the widgets initialize.

I also use this same trick for Neural DSP plugins that have multiple amps, but in those cases it’s figuring out how to map widgets based on a radio group of selection widgets, not a plugin parameter value.

Also, I forgot to mention that the retrieved text value is put through a custom function that compares it against several string arrays.

Looks like this:


var WowFlutterStyle : String Array = ["Tape", "DuckTape", "ChromeTape"]
    RateDepthStyle : String Array = ["HiFi", "BBD", "Digital", "BBDuck", "Clarity", "LoFi", "Quartz", "PhaserDDL", "Analog"]
    FreqShiftDetuneStyle : String Array = ["Ghost"]
    PitchShiftDetuneStyle : String Array = ["Pitch", "RevPitch", "PitchDuck", "RichPitch"]
    DuckingStyle : String Array = ["BBDuck", "Clarity", "DuckTape", "PitchDuck", "LoFi", "Quartz", "PhaserDDL", "RichPitch"]


    Function SearchArray(x : String Array, SearchTerm : String) Returns Boolean
    var Found : Boolean = False
        index : Integer
    
    For index = 0; index < Size(x); index = index + 1 Do
        If SearchTerm == x[index] Then
            Found = True
        End
    End
    
    result = Found
End
```
  1. Does this happen if you don’t use predictive loading?

  2. I’m not happy with this particular function, not even sure it was a good idea to provide it. If the plugin goes away (possible in predictive loading), all bets are off because these functions are asynchronous

No it doesn’t happen without predictive loading

Unfortunately, that function is probably not safe with predictive loading. We will take a look at it but it’s probably trying to map a parameter of a plugin that is no longer available. Not sure how we can detect that.

Is there anything else I can provide to help?

I’ve done the same thing by using a long string of booleans in the past but this way was a lot less text :slight_smile:

Would really need the simplest possible example with as little GP Script as possible and using only using plugin that are distributed with GP so we’re guaranteed to have them.

I suspect however that there’s a fundamental issue with certain GP Script functions that just can’t really work when in predictive loading mode because items can just go away.

So I rewrote the script to remove the custom function but I still get crashes. This time it was on Windows and the crash dump is claiming it was an invalid pointer read. So it could still be the same base issue (reading a plugin that no longer exists)?

So after a bit more fiddling, it seems like the crash gets triggered when I try to remap widgets on a plugin that’s used in multiple rackspaces.

I have multiple guitar rig setups and each one uses Valhalla Delay so I duplicate that plugin across the rackspaces and also duplicate the scripting that remaps the controls when the ‘mode’ gets changed. I can’t use the global rackspace since I save different delay settings with variations. I know you can map global controls to rackspaces but that’s a lot of extra work I was hoping to avoid, as it would end up being several dozen controls that would need to be linked.