Heap Corruption in DynamicObject

I’m trying to create an application of Juce in Unreal Engine 4. So far, it works but now I have the issue of always getting a heap corruption which i dont understand why or how it is happening.

My hierarchy is:

  1. AActor with custom component as a bridge to communicate with JUCE from Unreal
void UPerformerComponent::CreateIO()
{
    std::unique_ptr<ExtendedAudioSource> performerAudioSource = std::make_unique<ExtendedAudioSource>();
    performerAudioSource->startAooServer();

    performerAudioSource->addClientListener(this);

    juce::AudioDeviceManager& performerManager = IJUCEUnrealBridge::Get().deviceManagerPerformer;

    juce::AudioDeviceManager::AudioDeviceSetup setup;

    int inChannels = performerAudioSource->GetInputBusChannelCount();

    int outChannels = performerAudioSource->GetOutputBusChannelCount();

    performerManager.initialise(inChannels, outChannels, nullptr, false);
    performerManager.setCurrentAudioDeviceType("Windows Audio", true);

    performerManager.getAudioDeviceSetup(setup);
    setup.bufferSize = bufferSize;
    setup.sampleRate = sampleRate;
    performerManager.setAudioDeviceSetup(setup, true);

    performerManager.addAudioCallback(&performerAudioSourcePlayer);

    performerAudioSourcePlayer.setSource(performerAudioSource.get());
}
  1. so far so good, now this invokes prepareToPlay from where i call the first time SendPeerInfoUpdate(-1, nullptr)
void ExtendedAudioSource::SendPeerInfoUpdate(int index, RemotePeer* topeer)
{
    DynamicObject::Ptr info = new DynamicObject();

    char buf[AOO_MAXPACKETSIZE]; // == 4096

    const ScopedReadLock sl(mCoreLock);
    // gets skipped as I have yet to connect and add peers
    for (int i = 0; i < mRemotePeers.size(); ++i) {
        auto* peer = mRemotePeers.getUnchecked(i);
        if (topeer && topeer != peer) continue;
        if (index >= 0 && index != i) continue;

        osc::OutboundPacketStream msg(buf, sizeof(buf));

        auto buftimeMs = (std::max)((double)peer->buffertimeMs, 1e3 * currSamplesPerBlock / currentSampleRate);
        info->setProperty("bufferTime", buftimeMs);

        String jsonstr = JSON::toString(info.get(), true, 6);

        if (jsonstr.getNumBytesAsUTF8() > AOO_MAXPACKETSIZE - 100) {
            // to large
            return;
        }

        try {
            msg << osc::BeginMessage(SONOBUS_FULLMSG_PEERINFO)
                << osc::Blob(jsonstr.toRawUTF8(), (int)jsonstr.getNumBytesAsUTF8())
                << osc::EndMessage;
        }
        catch (const osc::Exception& e) {
            DBG(e.what());
            continue;
        }

        this->sendPeerMessage(peer, msg.Data(), (int32_t)msg.Size());

        if (index == i || topeer == peer) break;
    }
}

According to VS is the heap corruption happening when leaving this last function and the info pointer is getting destroyed. As the pointer is getting destroyed, I don’t understand how a heap corruption is possible.
It’s especially weird, as this is only an issue upon the very first start (after starting Unreal Engine 4) and can be passed over when clicking continue twice. After this, even when restarting the game (not the engine), VS no longer calls an error.
I hope someone can give me some advise on how to proceed.