I have an app that only crashes once it's been notarised. I read a few posts that essentially said before trying to identify issues by reviewing the crash report I should ensure signing and notarisation has happened correctly.
I've worked through the document "Resolving common notarization issues"
spctl -vvv --assess --type exec: gives no errors and correctly returns my developer id.
codesign -dvv: returns a timestamp
My app uses a hardened runtime.
My app shows up in Xcode as a macOS Archive (e.g not a Generic Xcode Archive)
Here is the crash report.
Translated Report (Full Report Below)
Process: Scene Finder [44479]
Path: /Users/USER/Downloads/Scene Finder.app/Contents/MacOS/Scene Finder
Identifier:
Version: 0.9 (20250206.1)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
User ID: 501
Date/Time: 2025-02-11 13:09:03.7786 +1000
OS Version: macOS 15.3 (24D60)
Report Version: 12
Anonymous UUID: EE8B1269-0A8A-3AB6-516B-C752E8A18B5A
Sleep/Wake UUID: 436CD7CF-7B13-4A9C-9425-7EF94CC007A9
Time Awake Since Boot: 98000 seconds
Time Since Wake: 9524 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: Namespace SIGNAL, Code 6 Abort trap: 6
Terminating Process: Scene Finder [44479]
Post
Replies
Boosts
Views
Activity
I'm getting hundreds of the message below in Xcode. I've narrowed it down to when I instantiate the following
AVAudioUnitComponentManager.shared()
Message send exceeds rate-limit threshold and will be dropped. { reporterID=231700600717315, rateLimit=32hz }
I'm having an issue with my swiftui macOS application where it is continually consuming more memory over time and after a couple of hours will grind to a halt. I've watched a few videos now on how to use Xcode Memory Graph and Instruments to identify the source of a leak (I assume it is a leak). These videos all provide very obvious issues as examples but mine seems more elusive and I don't know how to identify which part of my code is the cause of the issue.
After running instruments I see the following but the leaked objects are not always consistent:
Xcode Memory Graph shows NSSet as the culprit which is shown under CoreFoundation (not my App). I really am a beginner here and because it's not showing me somewhere in my app that I can go and investigate I'm really stuck.
I'm seeing unexpected results when examining the results from a sound classification test. Whilst I appear to get accurate startTime for observations, the duration is always the same as the value put into the windowDuration.
I'm guessing I'm misunderstanding the purpose of duration in the classification results.
The link here says:
The time range’s CMTime values are the number of audio frames at the analyzer’s sample rate. Use these time indices to determine where, in time, the result corresponds to the original audio.
My understanding of this statement is it should give me the startTime AND the duration of that detection event. For example, if I attempt to detect a crowd sound and that sound lasts for 1.8 seconds, then I should see 1.8 seconds in the duration.
Below is some code showing what I'm seeing.
Initialisation of request.windDuration of 1 second. If I change this to any other value, that value is reported back as the duration of the event. Even if the event is half a second in duration.
Any help in either a code issue or understanding the results better would be appreciated. Thanks
let request = try SNClassifySoundRequest(classifierIdentifier: .version1)
request.overlapFactor = 0.8
request.windowDuration = CMTimeMakeWithSeconds(600, preferredTimescale: 600)
My code to get the values out of the SNResult
func request(_ request: SNRequest, didProduce result: SNResult) {
guard let analysisResult = result as? SNClassificationResult,
let predominantSound = analysisResult.classifications.first?.identifier,
soundsToDetect.contains(predominantSound) else { return }
let startTime = analysisResult.timeRange.start.seconds
let duration = analysisResult.timeRange.duration.seconds
let confidence = analysisResult.classifications.first?.confidence ?? 0.0
let detectedSound = ClassificationObject(id: UUID(), name: predominantSound, startTime: startTime, duration: duration, confidence: confidence)
self.detectedSounds.append(detectedSound)
}