From d3c1b77015ceabeafa4aec5192ef29988ae2f54a Mon Sep 17 00:00:00 2001 From: jack Date: Mon, 7 Jul 2025 00:26:22 +0200 Subject: [PATCH] Fix thread safety crash in BluetoothMeshService - Fix race condition where recentlySentMessages Set was being modified from different queues - Move all Set.remove operations to messageQueue instead of main queue - Prevents EXC_BREAKPOINT crash when removing elements during concurrent access --- bitchat/Services/BluetoothMeshService.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bitchat/Services/BluetoothMeshService.swift b/bitchat/Services/BluetoothMeshService.swift index 4241e237..dc9bacc1 100644 --- a/bitchat/Services/BluetoothMeshService.swift +++ b/bitchat/Services/BluetoothMeshService.swift @@ -536,7 +536,7 @@ class BluetoothMeshService: NSObject { self.recentlySentMessages.insert(msgID) // Clean up old entries after 10 seconds - DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) { [weak self] in + self.messageQueue.asyncAfter(deadline: .now() + 10.0) { [weak self] in self?.recentlySentMessages.remove(msgID) } @@ -634,7 +634,7 @@ class BluetoothMeshService: NSObject { self.recentlySentMessages.insert(msgID) // Clean up after 10 seconds - DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) { [weak self] in + self.messageQueue.asyncAfter(deadline: .now() + 10.0) { [weak self] in self?.recentlySentMessages.remove(msgID) }