theheraldproject / herald-for-ios

Herald for iOS - Reliable mobile Bluetooth communications - iOS library & test app
https://heraldprox.io
Apache License 2.0
25 stars 24 forks source link

Crash occurring when starting sensors #190

Open anthonyessaye opened 1 year ago

anthonyessaye commented 1 year ago

Hello,

I have been trying to implement Herald into a project I'm involved in. The project is purely tailored for scientific research use. We successfully implemented the Herald protocol and were able to get devices to detect each other. On occasions we get a crash report that seems a bit odd to us as it originates from within Herald.

Sometimes, during initialization we get the following error in our stack:

0 (null) in _dispatch_queue_xref_dispose.cold.2 ()

and this is originating from notifySubscribers("start") in the ConcreteBLETransmitter.startAdvertising() method. Attached below is a screenshot of the stack trace and the crash log (the crashing thread is Thread 3)

Screenshot 2022-12-07 at 1 25 14 PM

Incident Identifier: 2BF80B50-FEE8-4E53-83CC-81C31D0BD186 Hardware Model: iPhone13,3 Process: [redacted] [4518] Path: /private/var/containers/Bundle/Application/416F98AB-E681-4CA3-A161-ED79C7EC6755/[redacted].app/[redacted] Identifier: [redacted] Version: 1.4.16 (181) AppStoreTools: 14B44 AppVariant: 1:iPhone13,3:16 Beta: YES Code Type: ARM-64 (Native) Role: Non UI Parent Process: launchd [1] Coalition: [redacted] [1166]

Date/Time: 2022-11-28 19:02:58.3831 -0600 Launch Time: 2022-11-28 19:02:58.0143 -0600 OS Version: iPhone OS 16.1.1 (20B101) Release Type: User Baseband Version: 3.07.00 Report Version: 104

Exception Type: EXC_BREAKPOINT (SIGTRAP) Exception Codes: 0x0000000000000001, 0x00000001cc1e4ebc Termination Reason: SIGNAL 5 Trace/BPT trap: 5 Terminating Process: exc handler [4518]

Triggered by Thread: 3

Thread 0 name: Thread 0: 0 libsystem_kernel.dylib 0x00000002017d1b48 mach_msg2_trap + 8 (:-1) 1 libsystem_kernel.dylib 0x00000002017e4008 mach_msg2_internal + 80 (mach_msg.c:201) 2 libsystem_kernel.dylib 0x00000002017e4248 mach_msg_overwrite + 388 (mach_msg.c:0) 3 libsystem_kernel.dylib 0x00000002017d208c mach_msg + 24 (mach_msg.c:323) 4 CoreFoundation 0x00000001c4c4eaf0 CFRunLoopServiceMachPort + 160 (CFRunLoop.c:2622) 5 CoreFoundation 0x00000001c4c4fd34 CFRunLoopRun + 1232 (CFRunLoop.c:3005) 6 CoreFoundation 0x00000001c4c54ed4 CFRunLoopRunSpecific + 612 (CFRunLoop.c:3418) 7 GraphicsServices 0x00000001fdf52368 GSEventRunModal + 164 (GSEvent.c:2196) 8 UIKitCore 0x00000001c71333d0 -[UIApplication _run] + 888 (UIApplication.m:3745) 9 UIKitCore 0x00000001c7133034 UIApplicationMain + 340 (UIApplication.m:5335) 10 [redacted] 0x0000000100e318e0 main + 68 (AppDelegate.swift:19) 11 dyld 0x00000001e32bc960 start + 2528 (dyldMain.cpp:1170)

Thread 1 name: Thread 1: 0 libsystem_kernel.dylib 0x00000002017d1ac4 semaphore_wait_trap + 8 (:-1) 1 libdispatch.dylib 0x00000001cc1ae578 _dispatch_sema4_wait + 28 (lock.c:139) 2 libdispatch.dylib 0x00000001cc1aec2c _dispatch_semaphore_wait_slow + 132 (semaphore.c:132) 3 [redacted] 0x000000010106ae7c CountdownLatch.await() + 4 (CountdownLatch.swift:34) 4 [redacted] 0x000000010106ae7c AlarmExecutor.execute() + 128 (AlarmExecutor.swift:106) 5 [redacted] 0x000000010106ae7c AlarmTasker.doAlarmTaskerWork(caller:lookahead:) + 1848 (AlarmTasker.swift:263) 6 [redacted] 0x000000010106f4cc closure #1 in closure #1 in AlarmTasker.checkAndFireAlarms(caller:lookahead:) + 4 (AlarmTasker.swift:223) 7 [redacted] 0x000000010106f4cc partial apply for closure #1 in closure #1 in AlarmTasker.checkAndFireAlarms(caller:lookahead:) + 20 (:0) 8 [redacted] 0x0000000100f87948 thunk for @escaping @callee_guaranteed () -> () + 28 (:0) 9 libdispatch.dylib 0x00000001cc1ac4b4 _dispatch_call_block_and_release + 32 (init.c:1518) 10 libdispatch.dylib 0x00000001cc1adfdc _dispatch_client_callout + 20 (object.m:560) 11 libdispatch.dylib 0x00000001cc1b5694 _dispatch_lane_serial_drain + 672 (inline_internal.h:2632) 12 libdispatch.dylib 0x00000001cc1b61e0 _dispatch_lane_invoke + 384 (queue.c:3940) 13 libdispatch.dylib 0x00000001cc1c0e10 _dispatch_workloop_worker_thread + 652 (queue.c:6846) 14 libsystem_pthread.dylib 0x0000000211c33df8 _pthread_wqthread + 288 (pthread.c:2618) 15 libsystem_pthread.dylib 0x0000000211c33b98 start_wqthread + 8 (:-1)

Thread 2 name: Thread 2: 0 LocationSupport 0x00000001dfd95098 CLConnectionClient::setRequireManualCachedMessageSend(bool) + 0 (CLConnectionClient.mm:544) 1 CoreLocation 0x00000001d0567894 CLClientCreateWithBundleIdentifierAndPathWithWebsiteOnSilo + 1456 (CLClient.mm:820) 2 CoreLocation 0x00000001d0572984 -[CLLocationManagerInternal initWithInfo:bundleIdentifier:bundlePath:websiteIdentifier:delegate:silo:] + 252 (CLLocationManager.m:414) 3 CoreLocation 0x00000001d0572f0c -[CLLocationManager initWithEffectiveBundleIdentifier:bundlePath:websiteIdentifier:delegate:silo:] + 428 (CLLocationManager.m:622) 4 [redacted] 0x000000010111726c LocationAlwaysPermission.status.getter + 3060332 (LocationAlwaysPermission.swift:44) 5 [redacted] 0x0000000101078f88 Permission.denied.getter + 20 (Permission.swift:31) 6 [redacted] 0x0000000100fb8f5c specialized PhoneSettingsComplianceChecker.areLocationPermissionsEnabled() + 1625948 (PhoneSettingsComplianceChecker.swift:63) 7 [redacted] 0x0000000100f9121c PhoneSettingsComplianceChecker.areLocationPermissionsEnabled() + 4 (:0) 8 [redacted] 0x0000000100f9121c closure #1 in static PeriodicGetLocationState.store_GPSdata() + 560 (PeriodicGetLocationState.swift:89) 9 [redacted] 0x0000000100f90c68 specialized syncedMethod(:_:) + 12 ([redacted]Sync.swift:17) 10 [redacted] 0x0000000100f90c68 static PeriodicGetLocationState.store_GPSdata() + 20 (PeriodicGetLocationState.swift:86) 11 [redacted] 0x0000000100f90c68 PeriodicGetLocationState.processAlarm(alarmCode:caller:) + 1248 (PeriodicGetLocationState.swift:70) 12 [redacted] 0x0000000101024578 closure #1 in AbstractState.handleIntent(intent:caller:) + 2065784 (AbstractState.swift:56) 13 [redacted] 0x0000000100f2d2d8 specialized syncedMethod(:_:) + 32 ([redacted]Sync.swift:17) 14 [redacted] 0x0000000100f2d2d8 AbstractState.handleIntent(intent:caller:) + 32 (AbstractState.swift:47) 15 [redacted] 0x0000000100f2d2d8 AbstractStatefulService.handleIntent(intent:alarmID_toCancel:) + 392 (AbstractStatefulService.swift:175) 16 [redacted] 0x0000000100f2c158 AbstractStatefulService.onHandleIntent(intent:alarmID_toCancel:) + 1048920 (AbstractStatefulService.swift:109) 17 [redacted] 0x0000000100f2e5b0 partial apply for closure #1 in AbstractStatefulService.onStartCommand(intent:alarmID_toCancel:) + 1058224 (:0) 18 [redacted] 0x0000000100ec1f78 closure #1 in [redacted]ExecutorService.init(serviceName:queueSize:) + 392 ([redacted]ExecutorService.swift:34) 19 [redacted] 0x0000000100f87948 thunk for @escaping @callee_guaranteed () -> () + 28 (:0) 20 libdispatch.dylib 0x00000001cc1ac4b4 _dispatch_call_block_and_release + 32 (init.c:1518) 21 libdispatch.dylib 0x00000001cc1adfdc _dispatch_client_callout + 20 (object.m:560) 22 libdispatch.dylib 0x00000001cc1b5694 _dispatch_lane_serial_drain + 672 (inline_internal.h:2632) 23 libdispatch.dylib 0x00000001cc1b61e0 _dispatch_lane_invoke + 384 (queue.c:3940) 24 libdispatch.dylib 0x00000001cc1c0e10 _dispatch_workloop_worker_thread + 652 (queue.c:6846) 25 libsystem_pthread.dylib 0x0000000211c33df8 _pthread_wqthread + 288 (pthread.c:2618) 26 libsystem_pthread.dylib 0x0000000211c33b98 start_wqthread + 8 (:-1)

Thread 3 name: Thread 3 Crashed: 0 libdispatch.dylib 0x00000001cc1e4ebc _dispatch_queue_xref_dispose.cold.2 + 36 (queue.c:2959) 1 libdispatch.dylib 0x00000001cc1b4644 _dispatch_queue_xref_dispose + 64 (queue.c:0) 2 libdispatch.dylib 0x00000001cc1ad844 -[OS_dispatch_source _xrefdispose] + 28 (object.m:350) 3 [redacted] 0x0000000100f63a64 ConcreteBLETransmitter.notifySubscribers(:) + 1312 (:0) 4 [redacted] 0x0000000100f62828 ConcreteBLETransmitter.startAdvertising() + 1540 (BLETransmitter.swift:141) 5 [redacted] 0x0000000100f69d4c protocol witness for Sensor.start() in conformance ConcreteBLETransmitter + 20 (:0) 6 [redacted] 0x0000000100e82278 ConcreteBLESensor.start() + 260 (BLESensor.swift:184) 7 [redacted] 0x0000000100e84778 protocol witness for Sensor.start() in conformance ConcreteBLESensor + 20 (:0) 8 [redacted] 0x0000000100eb7ad0 SensorArray.start() + 572112 (SensorArray.swift:80) 9 [redacted] 0x0000000101070f34 HeraldManager.initialize(studyId:couponName:) + 2379572 (:0) 10 [redacted] 0x0000000100f8b544 PeriodicHeraldState.enteringFrom(oldstate:caller:) + 1439044 (:0) 11 [redacted] 0x0000000100f2da08 AbstractStatefulService.setState(newState:) + 1055240 (AbstractStatefulService.swift:226) 12 [redacted] 0x0000000100f2d300 AbstractStatefulService.handleIntent(intent:alarmID_toCancel:) + 1053440 (:0) 13 [redacted] 0x0000000100f2c158 AbstractStatefulService.onHandleIntent(intent:alarmID_toCancel:) + 1048920 (AbstractStatefulService.swift:109) 14 [redacted] 0x0000000100f2e5b0 partial apply for closure #1 in AbstractStatefulService.onStartCommand(intent:alarmID_toCancel:) + 1058224 (:0) 15 [redacted] 0x0000000100ec1f78 closure #1 in [redacted]ExecutorService.init(serviceName:queueSize:) + 392 ([redacted]ExecutorService.swift:34) 16 [redacted] 0x0000000100f87948 thunk for @escaping @callee_guaranteed () -> () + 28 (:0) 17 libdispatch.dylib 0x00000001cc1ac4b4 _dispatch_call_block_and_release + 32 (init.c:1518) 18 libdispatch.dylib 0x00000001cc1adfdc _dispatch_client_callout + 20 (object.m:560) 19 libdispatch.dylib 0x00000001cc1b5694 _dispatch_lane_serial_drain + 672 (inline_internal.h:2632) 20 libdispatch.dylib 0x00000001cc1b61e0 _dispatch_lane_invoke + 384 (queue.c:3940) 21 libdispatch.dylib 0x00000001cc1c0e10 _dispatch_workloop_worker_thread + 652 (queue.c:6846) 22 libsystem_pthread.dylib 0x0000000211c33df8 _pthread_wqthread + 288 (pthread.c:2618) 23 libsystem_pthread.dylib 0x0000000211c33b98 start_wqthread + 8 (:-1)

Thread 4 name: Thread 4: 0 libsystem_kernel.dylib 0x00000002017d1adc semaphore_timedwait_trap + 8 (:-1) 1 libdispatch.dylib 0x00000001cc1ae5f4 _dispatch_sema4_timedwait + 64 (lock.c:154) 2 libdispatch.dylib 0x00000001cc1aebf4 _dispatch_semaphore_wait_slow + 76 (semaphore.c:116) 3 libswiftDispatch.dylib 0x00000001cd38795c OS_dispatchsemaphore.wait(wallTimeout:) + 24 (Dispatch.swift:189) 4 [redacted] 0x0000000100f18e58 GroupMembershipNetworkCall.execute() + 1744 (GroupMembershipNetworkCall.swift:45) 5 [redacted] 0x000000010100faa0 specialized AbstractNetworkCall.executeCall() + 1981088 (AbstractNetworkCall.swift:89) 6 [redacted] 0x0000000100f4da34 RuleQuestionInitialState.processAlarm(alarmCode:caller:) + 712 (RuleQuestionInitialState.swift:56) 7 [redacted] 0x0000000101024578 closure #1 in AbstractState.handleIntent(intent:caller:) + 2065784 (AbstractState.swift:56) 8 [redacted] 0x0000000100f2d2d8 specialized syncedMethod(:_:) + 32 ([redacted]Sync.swift:17) 9 [redacted] 0x0000000100f2d2d8 AbstractState.handleIntent(intent:caller:) + 32 (AbstractState.swift:47) 10 [redacted] 0x0000000100f2d2d8 AbstractStatefulService.handleIntent(intent:alarmID_toCancel:) + 392 (AbstractStatefulService.swift:175) 11 [redacted] 0x0000000100f2c158 AbstractStatefulService.onHandleIntent(intent:alarmID_toCancel:) + 1048920 (AbstractStatefulService.swift:109) 12 [redacted] 0x0000000100f2e5b0 partial apply for closure #1 in AbstractStatefulService.onStartCommand(intent:alarmID_toCancel:) + 1058224 (:0) 13 [redacted] 0x0000000100ec1f78 closure #1 in [redacted]ExecutorService.init(serviceName:queueSize:) + 392 ([redacted]ExecutorService.swift:34) 14 [redacted] 0x0000000100f87948 thunk for @escaping @callee_guaranteed () -> () + 28 (:0) 15 libdispatch.dylib 0x00000001cc1ac4b4 _dispatch_call_block_and_release + 32 (init.c:1518) 16 libdispatch.dylib 0x00000001cc1adfdc _dispatch_client_callout + 20 (object.m:560) 17 libdispatch.dylib 0x00000001cc1b5694 _dispatch_lane_serial_drain + 672 (inline_internal.h:2632) 18 libdispatch.dylib 0x00000001cc1b61e0 _dispatch_lane_invoke + 384 (queue.c:3940) 19 libdispatch.dylib 0x00000001cc1c0e10 _dispatch_workloop_worker_thread + 652 (queue.c:6846) 20 libsystem_pthread.dylib 0x0000000211c33df8 _pthread_wqthread + 288 (pthread.c:2618) 21 libsystem_pthread.dylib 0x0000000211c33b98 start_wqthread + 8 (:-1)

Thread 5 name: Thread 5: 0 libsystem_kernel.dylib 0x00000002017d1ac4 semaphore_wait_trap + 8 (:-1) 1 libdispatch.dylib 0x00000001cc1ae578 _dispatch_sema4_wait + 28 (lock.c:139) 2 libdispatch.dylib 0x00000001cc1aec2c _dispatch_semaphore_wait_slow + 132 (semaphore.c:132) 3 libswiftDispatch.dylib 0x00000001cd38795c OS_dispatch_semaphore.wait(wallTimeout:) + 24 (Dispatch.swift:189) 4 [redacted] 0x0000000100fe3bdc Scheduler.run_realTimeAsync(speed:) + 1801180 (Scheduler.swift:334) 5 [redacted] 0x0000000100fe4f44 protocol witness for IScheduler.run_realTimeAsync(speed:) in conformance Scheduler + 20 (:0) 6 [redacted] 0x0000000100ee523c closure #1 in closure #1 in RulesEngine.run_realTimeAsync(speed:) + 758332 (RulesEngine.swift:116) 7 [redacted] 0x0000000100f87948 thunk for @escaping @callee_guaranteed () -> () + 28 (:0) 8 libdispatch.dylib 0x00000001cc1ac4b4 _dispatch_call_block_and_release + 32 (init.c:1518) 9 libdispatch.dylib 0x00000001cc1adfdc _dispatch_client_callout + 20 (object.m:560) 10 libdispatch.dylib 0x00000001cc1b5694 _dispatch_lane_serial_drain + 672 (inline_internal.h:2632) 11 libdispatch.dylib 0x00000001cc1b61e0 _dispatch_lane_invoke + 384 (queue.c:3940) 12 libdispatch.dylib 0x00000001cc1c0e10 _dispatch_workloop_worker_thread + 652 (queue.c:6846) 13 libsystem_pthread.dylib 0x0000000211c33df8 _pthread_wqthread + 288 (pthread.c:2618) 14 libsystem_pthread.dylib 0x0000000211c33b98 start_wqthread + 8 (:-1)

Thread 6 name: Thread 6: 0 libsystem_kernel.dylib 0x00000002017d1b48 mach_msg2_trap + 8 (:-1) 1 libsystem_kernel.dylib 0x00000002017e4008 mach_msg2_internal + 80 (mach_msg.c:201) 2 libsystem_kernel.dylib 0x00000002017e4248 mach_msg_overwrite + 388 (mach_msg.c:0) 3 libsystem_kernel.dylib 0x00000002017d208c mach_msg + 24 (mach_msg.c:323) 4 CoreFoundation 0x00000001c4c4eaf0 CFRunLoopServiceMachPort + 160 (CFRunLoop.c:2622) 5 CoreFoundation 0x00000001c4c4fd34 CFRunLoopRun + 1232 (CFRunLoop.c:3005) 6 CoreFoundation 0x00000001c4c54ed4 CFRunLoopRunSpecific + 612 (CFRunLoop.c:3418) 7 Foundation 0x00000001beff6334 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212 (NSRunLoop.m:373) 8 Foundation 0x00000001beff621c -[NSRunLoop(NSRunLoop) runUntilDate:] + 64 (NSRunLoop.m:420) 9 UIKitCore 0x00000001c726833c -[UIEventFetcher threadMain] + 436 (UIEventFetcher.m:1377) 10 Foundation 0x00000001bf00f808 NSThreadstart__ + 716 (NSThread.m:963) 11 libsystem_pthread.dylib 0x0000000211c346cc _pthread_start + 148 (pthread.c:893) 12 libsystem_pthread.dylib 0x0000000211c33ba4 thread_start + 8 (:-1)

Thread 7: 0 libsystem_kernel.dylib 0x00000002017d2008 __semwait_signal + 8 (:-1) 1 libsystem_c.dylib 0x00000001cc1f67d8 nanosleep + 220 (nanosleep.c:104) 2 libsystem_c.dylib 0x00000001cc20aad8 sleep + 52 (sleep.c:62) 3 BugfenderSDK 0x0000000101845fe4 monitorCachedData + 600 4 libsystem_pthread.dylib 0x0000000211c346cc _pthread_start + 148 (pthread.c:893) 5 libsystem_pthread.dylib 0x0000000211c33ba4 thread_start + 8 (:-1)

Thread 8 name: Thread 8: 0 libsystem_kernel.dylib 0x00000002017d1b48 mach_msg2_trap + 8 (:-1) 1 libsystem_kernel.dylib 0x00000002017e4008 mach_msg2_internal + 80 (mach_msg.c:201) 2 libsystem_kernel.dylib 0x00000002017e4248 mach_msg_overwrite + 388 (mach_msg.c:0) 3 libsystem_kernel.dylib 0x00000002017d208c mach_msg + 24 (mach_msg.c:323) 4 BugfenderSDK 0x0000000101850f90 handleExceptions + 164 5 libsystem_pthread.dylib 0x0000000211c346cc _pthread_start + 148 (pthread.c:893) 6 libsystem_pthread.dylib 0x0000000211c33ba4 thread_start + 8 (:-1)

Thread 9 name: Thread 9: 0 libsystem_kernel.dylib 0x00000002017d1b48 mach_msg2_trap + 8 (:-1) 1 libsystem_kernel.dylib 0x00000002017e4008 mach_msg2_internal + 80 (mach_msg.c:201) 2 libsystem_kernel.dylib 0x00000002017e4248 mach_msg_overwrite + 388 (mach_msg.c:0) 3 libsystem_kernel.dylib 0x00000002017d208c mach_msg + 24 (mach_msg.c:323) 4 CoreFoundation 0x00000001c4c4eaf0 CFRunLoopServiceMachPort + 160 (CFRunLoop.c:2622) 5 CoreFoundation 0x00000001c4c4fd34 CFRunLoopRun + 1232 (CFRunLoop.c:3005) 6 CoreFoundation 0x00000001c4c54ed4 CFRunLoopRunSpecific + 612 (CFRunLoop.c:3418) 7 CFNetwork 0x00000001c5fac5a8 +[CFN_CoreSchedulingSetRunnable _run:] + 392 (CoreSchedulingSet.mm:1372) 8 Foundation 0x00000001bf00f808 NSThreadstart + 716 (NSThread.m:963) 9 libsystem_pthread.dylib 0x0000000211c346cc _pthread_start + 148 (pthread.c:893) 10 libsystem_pthread.dylib 0x0000000211c33ba4 thread_start + 8 (:-1)

Thread 10 name: Thread 10: 0 libsystem_kernel.dylib 0x00000002017d1ac4 semaphore_wait_trap + 8 (:-1) 1 libdispatch.dylib 0x00000001cc1ae578 _dispatch_sema4_wait + 28 (lock.c:139) 2 libdispatch.dylib 0x00000001cc1aec2c _dispatch_semaphore_wait_slow + 132 (semaphore.c:132) 3 libswiftDispatch.dylib 0x00000001cd38795c OS_dispatch_semaphore.wait(wallTimeout:) + 24 (Dispatch.swift:189) 4 [redacted] 0x0000000100ec1e78 closure #1 in [redacted]ExecutorService.init(serviceName:queueSize:) + 614008 ([redacted]ExecutorService.swift:27) 5 [redacted] 0x0000000100f87948 thunk for @escaping @callee_guaranteed () -> () + 28 (:0) 6 libdispatch.dylib 0x00000001cc1ac4b4 _dispatch_call_block_and_release + 32 (init.c:1518) 7 libdispatch.dylib 0x00000001cc1adfdc _dispatch_client_callout + 20 (object.m:560) 8 libdispatch.dylib 0x00000001cc1b5694 _dispatch_lane_serial_drain + 672 (inline_internal.h:2632) 9 libdispatch.dylib 0x00000001cc1b61e0 _dispatch_lane_invoke + 384 (queue.c:3940) 10 libdispatch.dylib 0x00000001cc1c0e10 _dispatch_workloop_worker_thread + 652 (queue.c:6846) 11 libsystem_pthread.dylib 0x0000000211c33df8 _pthread_wqthread + 288 (pthread.c:2618) 12 libsystem_pthread.dylib 0x0000000211c33b98 start_wqthread + 8 (:-1)

Thread 11: 0 libsystem_pthread.dylib 0x0000000211c33b90 start_wqthread + 0 (:-1)

Thread 12 name: Thread 12: 0 libsystem_kernel.dylib 0x00000002017d1ac4 semaphore_wait_trap + 8 (:-1) 1 libdispatch.dylib 0x00000001cc1ae578 _dispatch_sema4_wait + 28 (lock.c:139) 2 libdispatch.dylib 0x00000001cc1aec2c _dispatch_semaphore_wait_slow + 132 (semaphore.c:132) 3 BugfenderSDK 0x000000010185445c -[BFStorageItem bf_sendSessionWithError:] + 256 4 BugfenderSDK 0x00000001018540c4 41-[BFStorageItem sendWithCompletionBlock:]_block_invoke + 80 5 Foundation 0x00000001bf05b2f0 NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK + 24 (NSOperation.m:1545) 6 Foundation 0x00000001bf02f4a0 -[NSBlockOperation main] + 104 (NSOperation.m:1564) 7 Foundation 0x00000001bf02f430 NSOPERATION_IS_INVOKING_MAIN + 16 (NSOperation.m:2189) 8 Foundation 0x00000001beff07d8 -[NSOperation start] + 708 (NSOperation.m:2206) 9 Foundation 0x00000001beff050c NSOPERATIONQUEUE_IS_STARTING_AN_OPERATION + 16 (NSOperation.m:2220) 10 Foundation 0x00000001beff5c20 NSOQSchedule_f + 172 (NSOperation.m:2231) 11 libdispatch.dylib 0x00000001cc1bd114 _dispatch_block_async_invoke2 + 148 (queue.c:555) 12 libdispatch.dylib 0x00000001cc1adfdc _dispatch_client_callout + 20 (object.m:560) 13 libdispatch.dylib 0x00000001cc1b146c _dispatch_continuation_pop + 504 (inline_internal.h:2632) 14 libdispatch.dylib 0x00000001cc1b0ad4 _dispatch_async_redirect_invoke + 584 (queue.c:830) 15 libdispatch.dylib 0x00000001cc1bfa6c _dispatch_root_queue_drain + 396 (inline_internal.h:0) 16 libdispatch.dylib 0x00000001cc1c0284 _dispatch_worker_thread2 + 164 (queue.c:7052) 17 libsystem_pthread.dylib 0x0000000211c33dbc _pthread_wqthread + 228 (pthread.c:2631) 18 libsystem_pthread.dylib 0x0000000211c33b98 start_wqthread + 8 (:-1)

Thread 13 name: Thread 13: 0 [redacted] 0x00000001010513e0 @objc ConcreteBLEReceiver.centralManagerDidUpdateState(_:) + 0 (:0) 1 CoreBluetooth 0x00000001e4bd0058 -[CBCentralManager observeValueForKeyPath:ofObject:change:context:] + 264 (CBCentralManager.m:235) 2 Foundation 0x00000001beff03f0 NSKeyValueNotifyObserver + 252 (NSKeyValueObserving.m:434) 3 Foundation 0x00000001bf0068d4 NSKeyValueDidChange + 356 (NSKeyValueObserving.m:553) 4 Foundation 0x00000001beff3860 -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:maybeNewValuesDict:usingBlock:] + 680 (NSKeyValueObserving.m:2653) 5 Foundation 0x00000001beff3590 -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] + 64 (NSKeyValueObserving.m:2668) 6 Foundation 0x00000001beff2518 _NSSetLongLongValueAndNotify + 284 (NSKeyValueObserverNotifying.m:100) 7 CoreBluetooth 0x00000001e4bd1620 -[CBManager extractLocalDeviceStatesDictionary:] + 256 (CBManager.m:111) 8 CoreBluetooth 0x00000001e4bd0718 -[CBManager xpcConnectionDidReceiveMsg:args:] + 68 (CBManager.m:438) 9 CoreBluetooth 0x00000001e4bd0690 __30-[CBXpcConnection _handleMsg:]_block_invoke + 48 (CBXpcConnection.m:371) 10 libdispatch.dylib 0x00000001cc1ac4b4 _dispatch_call_block_and_release + 32 (init.c:1518) 11 libdispatch.dylib 0x00000001cc1adfdc _dispatch_client_callout + 20 (object.m:560) 12 libdispatch.dylib 0x00000001cc1b5694 _dispatch_lane_serial_drain + 672 (inline_internal.h:2632) 13 libdispatch.dylib 0x00000001cc1b6214 _dispatch_lane_invoke + 436 (queue.c:3940) 14 libdispatch.dylib 0x00000001cc1b556c _dispatch_lane_serial_drain + 376 (inline_internal.h:0) 15 libdispatch.dylib 0x00000001cc1b61e0 _dispatch_lane_invoke + 384 (queue.c:3940) 16 libdispatch.dylib 0x00000001cc1c0e10 _dispatch_workloop_worker_thread + 652 (queue.c:6846) 17 libsystem_pthread.dylib 0x0000000211c33df8 _pthread_wqthread + 288 (pthread.c:2618) 18 libsystem_pthread.dylib 0x0000000211c33b98 start_wqthread + 8 (:-1)

Thread 14 name: Thread 14: 0 Foundation 0x00000001bf8dfea0 objc_msgSend$_allocWithExtraBytes: + 0 1 Foundation 0x00000001bf0051e0 -[_NSPlaceholderData initWithBytes:length:copy:deallocator:] + 76 (NSData.m:209) 2 Foundation 0x00000001bf004d10 +[NSData(NSData) dataWithBytes:length:] + 40 (NSData.m:732) 3 LocationSupport 0x00000001dfd8cc74 CLConnectionMessage::getObjectOfClasses(NSSet*) const + 96 (CLConnection.mm:782) 4 CoreLocation 0x00000001d0554cfc _ZL25_CLClientCreateConnectionP10CLClient_block_invoke + 212 (CLClient.mm:1325) 5 LocationSupport 0x00000001dfd95064 _ZN18CLConnectionClient24setDefaultMessageHandlerEU13block_pointerFvNSt3110shared_ptrI19CLConnectionMessageEEE_block_invoke_2 + 68 (CLConnectionClient.mm:438) 6 LocationSupport 0x00000001dfda0774 _ZN18CLConnectionClient24setDefaultMessageHandlerEU13block_pointerFvNSt3110shared_ptrI19CLConnectionMessageEEE_block_invoke + 152 (CLCallbackDropManager.h:46) 7 LocationSupport 0x00000001dfd8fc1c CLConnection::handleMessage(std::1::sharedptr) + 512 (CLConnection.mm:317) 8 LocationSupport 0x00000001dfd8c7e8 ZN12CLConnection23initializeConnection_nlEv_block_invoke + 56 (CLConnection.mm:271) 9 LocationSupport 0x00000001dfd8d7d4 _ZL15setEventHandlerPU24objcproto13OS_xpc_object8NSObjectU13block_pointerFvNSt3110shared_ptrI19CLConnectionMessageEEEU13block_pointerFvvES9_PS9_NS3_I28CLConnectionEntitlementCacheEE_block_invoke + 448 (CLConnection.mm:435) 10 libxpc.dylib 0x0000000211c88bc0 _xpc_connection_call_event_handler + 152 (connection.c:834) 11 libxpc.dylib 0x0000000211c88ff0 _xpc_connection_mach_event + 992 (connection.c:1445) 12 libdispatch.dylib 0x00000001cc1ae09c _dispatch_client_callout4 + 20 (object.m:600) 13 libdispatch.dylib 0x00000001cc1ca830 _dispatch_mach_msg_invoke + 468 (mach.c:2462) 14 libdispatch.dylib 0x00000001cc1b556c _dispatch_lane_serial_drain + 376 (inline_internal.h:0) 15 libdispatch.dylib 0x00000001cc1cb54c _dispatch_mach_invoke + 448 (mach.c:2784) 16 libdispatch.dylib 0x00000001cc1b556c _dispatch_lane_serial_drain + 376 (inline_internal.h:0) 17 libdispatch.dylib 0x00000001cc1b61e0 _dispatch_lane_invoke + 384 (queue.c:3940) 18 libdispatch.dylib 0x00000001cc1c0e10 _dispatch_workloop_worker_thread + 652 (queue.c:6846) 19 libsystem_pthread.dylib 0x0000000211c33df8 _pthread_wqthread + 288 (pthread.c:2618) 20 libsystem_pthread.dylib 0x0000000211c33b98 start_wqthread + 8 (:-1)

Thread 15: 0 libsystem_pthread.dylib 0x0000000211c33b90 start_wqthread + 0 (:-1)

Thread 16: 0 libsystem_pthread.dylib 0x0000000211c33b90 start_wqthread + 0 (:-1)

Thread 3 crashed with ARM Thread State (64-bit): x0: 0x019ffe8000000000 x1: 0x00000001c04298de x2: 0x000000021b240580 x3: 0x059ffe8000000000 x4: 0x0000000280440d38 x5: 0x0000000000000280 x6: 0x0000000000000000 x7: 0x000000021bb80e30 x8: 0x019ffe8000000000 x9: 0x0000000000000003 x10: 0x0000000222fdfb60 x11: 0x000000000000000f x12: 0x0000000000280400 x13: 0x000000028243d5c8 x14: 0x000000021b240580 x15: 0x000000021b240580 x16: 0x000000021b240580 x17: 0x00000001cc1ad828 x18: 0x0000000000000000 x19: 0x0000000280440d00 x20: 0x0000000280440d00 x21: 0x0000000282a35380 x22: 0x0000000125e9da40 x23: 0x00000000000000b0 x24: 0x000000021d9704a0 x25: 0x000000016f1720d0 x26: 0x000000016f1720c0 x27: 0x000000021c5dcbc8 x28: 0x000000028117fb50 fp: 0x000000016f172030 lr: 0x00000001cc1b4644 sp: 0x000000016f172030 pc: 0x00000001cc1e4ebc cpsr: 0x1000 esr: 0xf2000001 (Breakpoint) brk 1

Binary Images: 0x100e2c000 - 0x101237fff [redacted] arm64 <67d6786b26d93d8493f23c9c70014be3> /private/var/containers/Bundle/Application/416F98AB-E681-4CA3-A161-ED79C7EC6755/[redacted].app/[redacted] 0x10180c000 - 0x101877fff BugfenderSDK arm64 <16e5974c3be337c388544182b4e94491> /private/var/containers/Bundle/Application/416F98AB-E681-4CA3-A161-ED79C7EC6755/[redacted].app/Frameworks/BugfenderSDK.framework/BugfenderSDK 0x1befb4000 - 0x1bf8fdfff Foundation arm64e /System/Library/Frameworks/Foundation.framework/Foundation 0x1c4bd4000 - 0x1c4fb9fff CoreFoundation arm64e <5cdc5d9ae5063740b64ebb30867b4f1b> /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 0x1c5d56000 - 0x1c611dfff CFNetwork arm64e /System/Library/Frameworks/CFNetwork.framework/CFNetwork 0x1c6d91000 - 0x1c856efff UIKitCore arm64e <179501b60fc2344ab969b4e3961ebe10> /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore 0x1cc1aa000 - 0x1cc1f0fff libdispatch.dylib arm64e /usr/lib/system/libdispatch.dylib 0x1cc1f1000 - 0x1cc270ff7 libsystem_c.dylib arm64e /usr/lib/system/libsystem_c.dylib 0x1cd386000 - 0x1cd39dff7 libswiftDispatch.dylib arm64e <086f6832037134b4a9609160cc6395d8> /usr/lib/swift/libswiftDispatch.dylib 0x1d0552000 - 0x1d0647fff CoreLocation arm64e <82a2d4efb2ad3894a0d38d0d08a05200> /System/Library/Frameworks/CoreLocation.framework/CoreLocation 0x1dfd88000 - 0x1dfdbafff LocationSupport arm64e <70b56c6d902d34b1ab09f818796b9ad7> /System/Library/PrivateFrameworks/LocationSupport.framework/LocationSupport 0x1e32a7000 - 0x1e332a00f dyld arm64e /usr/lib/dyld 0x1e4bce000 - 0x1e4c74fff CoreBluetooth arm64e <239c145421053170856df10837a9d48f> /System/Library/Frameworks/CoreBluetooth.framework/CoreBluetooth 0x1fdf51000 - 0x1fdf59fff GraphicsServices arm64e /System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices 0x2017d1000 - 0x201807ffb libsystem_kernel.dylib arm64e /usr/lib/system/libsystem_kernel.dylib 0x211c33000 - 0x211c3efff libsystem_pthread.dylib arm64e <1aa3a4b6f9e730568c8b4e4dd81312a4> /usr/lib/system/libsystem_pthread.dylib 0x211c77000 - 0x211cb7fff libxpc.dylib arm64e <7a0ca8d2728537ddae972efaa1de763e> /usr/lib/system/libxpc.dylib

EOF

adamfowleruk commented 1 year ago

Hello! Thanks for using Herald! Can I please ask, which exact version of Herald are you using? E.g. are you fetching from GitHub the source, and if so are you on the 'develop' branch (an in-flight, not yet released, version) or 'main' (our last major release in the 1.2.x series), or from the CocoaPod? (And if so, which version of the pod? E.g.: https://github.com/CocoaPods/Specs/tree/master/Specs/6/5/0/Herald ).

I suspect you are using the 2.1.0-beta3 Beta version rather than the 2.0.0 release version, but I could be wrong.

If not, could you please confirm any changes you've made to the BLESensorConfiguration class for your use case, and if you have requested the appropriate Bluetooth permissions? Thanks!

anthonyessaye commented 1 year ago

@adamfowleruk Hello Adam! Yes i just checked and we are using code from the development branch dated early October so 2.1.0-beta3 is right. I never saw a redirection to any Pod (I would much rather have herald go through CocoaPods so thats a move we're gonna do)

Checking the commits I can't see any changes to BLESensorConfiguration. Within Herald we only lowered the logging level to have a cleaner output on the debugger.

Yes we are requesting Bluetooth Permissions, before ever triggering Herald. Something to note that might be useful, our code could trigger Herald scans from the foreground or the background depending on a certain FSM that realizes that Herald should be initialized.

Edit 1: The FSM cannot init Herald if Bluetooth permissions were not granted.

adamfowleruk commented 1 year ago

@anthonyessaye I'm just doing the final testing for the release. I've updated the develop branches on both the iOS and Android repositories.

As for Bluetooth permissions, you should be able to called SensorArray.stop() then .start() and that should kick the Herald API back into life whilst respecting newly granted permissions.

Please try with the latest develop branch (or release branch if the release is pushed out before you get time to action this) and let me know of any further issues.

adamfowleruk commented 1 year ago

Hi @anthonyessaye . I've just pushed the v2.1.0 release of the cocoapod. Latest release on the main branch (about to be merged back into the develop branch and version bumped). Please retest with this new version. Full release notes to follow when the Android and C++ releases have also been done, and the website has been updated with a blog post announcement.

anthonyessaye commented 1 year ago

@adamfowleruk Hello Adam, thank you for the update. We've been dealing on finalizing some stuff in our release as well. Will get back to this thread in a bit

Edit 1: @adamfowleruk We just updated to the latest pod version and will set the app through its testing paces. If all is good will close this issue.

adamfowleruk commented 1 year ago

@anthonyessaye We've just released v2.2.0 which should appear shortly and includes reliability, detection, and battery use improvements. Please let me know if there are still issues. If I do not hear from you then I shall close your issue on Mar 16th on the assumption that all is now working. Thanks!

anthonyessaye commented 1 year ago

@adamfowleruk Thank you for getting back about this. We've been testing internally on v2.1.0 and we still got the crash. We're currently upgrading to v2.2.0 to test out. The issue is the error occurs on testers' devices after running for a long time. I'll set any crashlogs we get.