Closed rhythmkay closed 5 years ago
The operations of internalErrors is unsafe for multithreading.
Thread 7 Crashed: 0 libsystem_kernel.dylib 0x000000018f92f104 __pthread_kill + 4 1 libsystem_c.dylib 0x000000018f886d78 abort + 132 2 libsystem_malloc.dylib 0x000000018f983768 __malloc_put 3 libsystem_malloc.dylib 0x000000018f983924 _malloc_report + 64 4 libsystem_malloc.dylib 0x000000018f9762d4 free + 372 5 CoreFoundation 0x000000018fc7f5a8 -[__NSArrayM insertObject:atIndex:] + 372 6 mttlite 0x00000001023c85ac -[KTVHCLog addError:] (KTVHCLog.m:119) 7 mttlite 0x00000001023acd9c -[KTVHCDataReader sourceManager:didFailed:] (KTVHCDataReader.m:246) 8 mttlite 0x00000001023b2400 __44-[KTVHCDataSourceManager callbackForFailed:]_block_invoke (KTVHCDataSourceManager.m:248) 9 libdispatch.dylib 0x000000018f7d16c8 __dispatch_call_block_and_release + 24 10 libdispatch.dylib 0x000000018f7d2484 __dispatch_client_callout + 16 11 libdispatch.dylib 0x000000018f7acfa0 __dispatch_lane_serial_drain$VARIANT$armv81 + 548 12 libdispatch.dylib 0x000000018f7adae4 __dispatch_lane_invoke$VARIANT$armv81 + 412 13 libdispatch.dylib 0x000000018f7b5f04 __dispatch_workloop_worker_thread + 584 14 libsystem_pthread.dylib 0x000000018f9b50dc _pthread_wqthread + 300 1 libsystem_pthread.dylib 0x000000018f9b7cec _start_wqthread + 4
- (NSError *)lastError { if (self.internalErrors.count > 0) { return self.internalErrors.lastObject; } return nil; } - (NSArray<NSError *> *)allErrors { if (self.internalErrors.count > 0) { return [self.internalErrors copy]; } return nil; } - (void)addError:(NSError *)error { if (error && [error isKindOfClass:[NSError class]]) { if (self.internalErrors.count >= 20) { [self.internalErrors removeObjectAtIndex:0]; } [self.internalErrors addObject:error]; } }
Fixed in 2.0.
The operations of internalErrors is unsafe for multithreading.