Assertion: 'connectionsRemaining == 0' failed

[FMOD] assert : assertion: ‘connectionsRemaining == 0’ failed
[FMOD] assert : assertion: ‘connectionsRemaining == 0’ failed
FMODUnity.RuntimeManager:DEBUG_CALLBACK(DEBUG_FLAGS, IntPtr, Int32, IntPtr, IntPtr)

can you tell me what does this logerror means?

i tick liveupdate in fmod settings for editor, but the default settings for android is close.
i run the game in android mobile phone, this log error is uploaded.
i can publish the release packge, but i want to known the reason.


This error means that not all DSP connections were released correctly when closing. Are you using the function FMODUnity.RuntimeManger.close() anywhere in your project?

first, there is no FMODUnity.RuntimeManger.close() function in FMODUnity.RuntimeManger.cs file. our fmod version is 2.01.11:

another question is, i destroy dsp on monobehaviour OnDestroy method:

    private void AddDSP()
        RuntimeManager.CoreSystem.getMasterChannelGroup(out m_masterGroup);
        var result = m_masterGroup.addDSP(-1, m_faderAllDsp);

        result = m_toneEmpty.getChannelGroup(out FMOD.ChannelGroup g1);
        result = g1.getParentGroup(out FMOD.ChannelGroup parentGroup);
        result = parentGroup.getParentGroup(out FMOD.ChannelGroup parentGroup2);
        m_toneGroup = parentGroup2;
        result = m_toneGroup.addDSP(-1, m_faderDsp);
        result = m_toneGroup.addDSP(-2, m_fftDsp);

    public void OnDestroy()

    private void ReleaseFmodDSP()
        var result = m_toneGroup.removeDSP(m_faderDsp);
        result = m_toneGroup.removeDSP(m_fftDsp);
        result = m_masterGroup.removeDSP(m_faderAllDsp);

        result = m_fftDsp.release();
        result = m_faderDsp.release();
        result = m_faderAllDsp.release();

but the error still happened. i have three questions:
is there any method i can call to release all dsp i created to avoid this error logs.
and is there any method to check which dsp is not released.
and is there any method to check how many dsps are used in the project.

Apologies, the function is FMODUnity.RuntimeManager.CoreSystem.close().

When checking FMOD.RESULTS a good function to use is:

/// <summary>
/// Error checking for FMOD Functions
/// if the fucntions doesn't exit with FMOD.RESULT.OK, it will print a message and the result
/// </summary>
private void ERRCHECK(FMOD.RESULT result, string failMsg)
    if (result != FMOD.RESULT.OK)
                Debug.Log(failMsg + " with result: " + result);

And use it like this
ERRCHECK(m_masterGroup.addDSP(-1, m_faderDsp), "Failed to add faderDsp to masterGroup");
This way if the function fails it will log it in the console.

Could I please get a code snippet of how you are creating the DSP you are showing?

You could recursively search for all the DSP in the mixer and remove them.

Checking the result when releasing a DSP will be the best way to check if a certain DSP has not been release correctly.

Unfortunately not