polarofficial / polar-ble-sdk

Repository includes SDK and code examples. More info https://polar.com/en/developers
Other
447 stars 147 forks source link

Crashed: PsFtpMtuQueue when listing offline recordings #468

Open orestesgaolin opened 3 weeks ago

orestesgaolin commented 3 weeks ago

Platform on which you observed the bug:

Device on which you observed the bug:

Describe the bug

SDK crashes when disk space is too low and we're trying to list offline recordings

When trying to set offline trigger:

Failed to set offline trigger due to controlPointRequestFailed(errorCode: 14, description: "Disk full"), continuing the setup execution Error: The operation couldn’t be completed. (PolarBleSdk.BlePmdError error 0.)

When checking the disk space:

Free space is PolarDiskSpaceData(totalSpace: 14416896, freeSpace: 1991680)

When trying to stop currently running offline recording:

Stopping offline recording failed for device xxx. Polar Error: controlPointRequestFailed, desc: Already in state, code: 6 Already in state Error: The operation couldn’t be completed. (PolarBleSdk.BlePmdError error 0.)

When trying to start offline recording:

Starting offline recording failed for device xxx. Polar Error: controlPointRequestFailed, desc: Disk full, code: 14 Disk full Error: The operation couldn’t be completed. (PolarBleSdk.BlePmdError error 0.)

And when listing offline recordings crashes the app which means we cannot delete existing recordings:

Crashed: PsFtpMtuQueue_obj0x149f1eca0 (QOS: UNSPECIFIED)
0  PolarBleSdk                    0xc7b14 $s11PolarBleSdk0aB7ApiImplC21listOfflineRecordingsy7RxSwift10ObservableCyAA0aG14RecordingEntryVGSSFAISS4name_s6UInt64V4sizet_tKcfU0_ + 2192
1  RxSwift                        0x484d0 $s7RxSwift7MapSink33_5428EFA9A9B0C0340021B871D2E5AC01LLC2onyyAA5EventOyxGF + 476
2  RxSwift                        0x486c0 $s7RxSwift7MapSink33_5428EFA9A9B0C0340021B871D2E5AC01LLCyxq_GAA12ObserverTypeA2aFP2onyyAA5EventOy7ElementQzGFTW + 20
3  RxSwift                        0x74ee4 $s7RxSwift4SinkC9forwardOnyyAA5EventOy7ElementQzGF + 112
4  RxSwift                        0x4d950 $s7RxSwift13MergeSinkIter33_DDEA0423368B3B462AE46699A4D080E1LLC2onyyAA5EventOy7ElementQy_GFyyXEfU_ + 400
5  RxSwift                        0x4d79c $s7RxSwift13MergeSinkIter33_DDEA0423368B3B462AE46699A4D080E1LLC2onyyAA5EventOy7ElementQy_GF + 68
6  RxSwift                        0x4db20 $s7RxSwift13MergeSinkIter33_DDEA0423368B3B462AE46699A4D080E1LLCyxq_q0_GAA12ObserverTypeA2aFP2onyyAA5EventOy7ElementQzGFTW + 20
7  RxSwift                        0x74ee4 $s7RxSwift4SinkC9forwardOnyyAA5EventOy7ElementQzGF + 112
8  RxSwift                        0x4d950 $s7RxSwift13MergeSinkIter33_DDEA0423368B3B462AE46699A4D080E1LLC2onyyAA5EventOy7ElementQy_GFyyXEfU_ + 400
9  RxSwift                        0x4d79c $s7RxSwift13MergeSinkIter33_DDEA0423368B3B462AE46699A4D080E1LLC2onyyAA5EventOy7ElementQy_GF + 68
10 RxSwift                        0x4db20 $s7RxSwift13MergeSinkIter33_DDEA0423368B3B462AE46699A4D080E1LLCyxq_q0_GAA12ObserverTypeA2aFP2onyyAA5EventOy7ElementQzGFTW + 20
11 RxSwift                        0x46a9c $s7RxSwift4Just33_BD9B9D4356C4038796FB16D0D54A9F8ELLC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lF + 176
12 RxSwift                        0x4d1e0 $s7RxSwift9MergeSink33_DDEA0423368B3B462AE46699A4D080E1LLC14subscribeInneryyAA10ObservableCy7ElementQy_GF + 404
13 RxSwift                        0x4cffc $s7RxSwift9MergeSink33_DDEA0423368B3B462AE46699A4D080E1LLC2onyyAA5EventOyxGF + 1024
14 RxSwift                        0x4ddec $s7RxSwift9MergeSink33_DDEA0423368B3B462AE46699A4D080E1LLCyxq_q0_GAA12ObserverTypeA2aFP2onyyAA5EventOy7ElementQzGFTW + 20
15 RxSwift                        0x74ee4 $s7RxSwift4SinkC9forwardOnyyAA5EventOy7ElementQzGF + 112
16 RxSwift                        0x6e5b8 $s7RxSwift22ObservableSequenceSink33_96A08EF21E1C334E32DF263AE640D45ELLC3runAA10Disposable_pyFy8IteratorQz_yAHXEtcfU_ + 584
17 RxSwift                        0x63f8c $sxxlyxIsgn_Iegng_xxq_r0_lyxytIsgnr_ytIegnnr_lTRTA + 52
18 RxSwift                        0x63954 $s7RxSwift27RecursiveImmediateSchedulerC8scheduleyyxFAA10Disposable_pxcfU_ + 352
19 RxSwift                        0x6cc68 $s7RxSwift13ScheduledItemV6invokeyyF + 44
20 RxSwift                        0x5de30 $s7RxSwift22CurrentThreadSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlFyt_Tg5 + 648
21 RxSwift                        0x5db50 $s7RxSwift8ProducerC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lF + 512
22 RxSwift                        0x4d1e0 $s7RxSwift9MergeSink33_DDEA0423368B3B462AE46699A4D080E1LLC14subscribeInneryyAA10ObservableCy7ElementQy_GF + 404
23 RxSwift                        0x4cffc $s7RxSwift9MergeSink33_DDEA0423368B3B462AE46699A4D080E1LLC2onyyAA5EventOyxGF + 1024
24 RxSwift                        0x4ddec $s7RxSwift9MergeSink33_DDEA0423368B3B462AE46699A4D080E1LLCyxq_q0_GAA12ObserverTypeA2aFP2onyyAA5EventOy7ElementQzGFTW + 20
25 RxSwift                        0x74ee4 $s7RxSwift4SinkC9forwardOnyyAA5EventOy7ElementQzGF + 112
26 RxSwift                        0x2cd00 $s7RxSwift23AnonymousObservableSink33_95EBF5692819D58425EC2DD0512D115ALLC2onyyAA5EventOy7ElementQzGF + 324
27 RxSwift                        0x2ce64 $s7RxSwift23AnonymousObservableSink33_95EBF5692819D58425EC2DD0512D115ALLCyxGAA12ObserverTypeA2aFP2onyyAA5EventOy7ElementQzGFTW + 20
28 RxSwift                        0xa6e4 $s7RxSwift11AnyObserverVyACyxGqd__c7ElementQyd__RszAA0D4TypeRd__lufcyAA5EventOyxGcqd__cfu_yAJcfu0_TA + 44
29 RxSwift                        0xa1cc $s7RxSwift11AnyObserverV2onyyAA5EventOyxGF + 20
30 RxSwift                        0x7241c $s7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE6create9subscribeAA0cD0VyAE7ElementQzGAA10Disposable_pys6ResultOyAMs5Error_pGcc_tFZAaO_pAA11AnyObserverVyAMGcfU_yAScfU_ + 480
31 PolarBleSdk                    0x3f928 $ss6ResultOySo6NSDataCs5Error_pGIegn_AFIegg_TRTATm + 56
32 PolarBleSdk                    0x3a128 $s11PolarBleSdk0B11PsFtpClientC7requesty7RxSwift17PrimitiveSequenceVyAE11SingleTraitOSo6NSDataCG10Foundation4DataVFAE10Disposable_pys6ResultOyAKs5Error_pGccfU_yyYbcfU_ + 2836
33 PolarBleSdk                    0x22580 $sIegh_IeyBh_TR + 28
34 Foundation                     0x1cbe0 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 24
35 Foundation                     0x1caa0 -[NSBlockOperation main] + 104
36 Foundation                     0x1c8a0 __NSOPERATION_IS_INVOKING_MAIN__ + 16
37 Foundation                     0x1ab40 -[NSOperation start] + 648
38 Foundation                     0x9f558 __NSOPERATIONQUEUE_IS_STARTING_AN_OPERATION__ + 16
39 Foundation                     0x9f1a4 __NSOQSchedule_f + 172
40 libdispatch.dylib              0x12e5c _dispatch_block_async_invoke2 + 148
41 libdispatch.dylib              0x3dd4 _dispatch_client_callout + 20
42 libdispatch.dylib              0x72d8 _dispatch_continuation_pop + 600
43 libdispatch.dylib              0x68f4 _dispatch_async_redirect_invoke + 584
44 libdispatch.dylib              0x15894 _dispatch_root_queue_drain + 392
45 libdispatch.dylib              0x1609c _dispatch_worker_thread2 + 156
46 libsystem_pthread.dylib        0x48f8 _pthread_wqthread + 228
47 libsystem_pthread.dylib        0x10cc start_wqthread + 8

CleanShot 2024-06-11 at 10 21 29

CleanShot 2024-06-11 at 10 23 05

How to Reproduce

Trying to list offline recordings when low on disk space.

Expected behavior

Not crashing when parsing the date from file path

SDK details

SDK version 5.5.0 Device firmware 2.1.1