The code below generates this error (appending to exporters):
fatal error: UnsafeMutablePointer.deinitialize with negative count
    var exporters = [AVAssetExportSession]()
    let exporter = AVAssetExportSession(asset: mainComposition, presetName: AVAssetExportPresetHighestQuality)!
    exporter.videoComposition = videoComposition
    exporter.outputFileType = AVFileTypeMPEG4
    exporter.outputURL = exportURL
    exporter.shouldOptimizeForNetworkUse = true
    exporters.append(exporter)
The other posts on StackOverflow regarding UnsafeMutablePointer.deinitialize do not shed much light on the issue, which doesn't happen consistently.
Any ideas?
I had a similar error, the issue was caused by multiple threads modifying the array at the same time. Wrapping the append calls in a serial dispatch queue solved it for me.
    let serialQueue = DispatchQueue(label: "myqueue")
    serialQueue.sync {
        exporters.append(exporter)
    }
                        I have solved this type of issue like this way:
DispatchQueue.global(qos: .background).sync {
        //your code 
    }
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With