Как устранить сбой модульного теста, когда покрытие кода включено в Xcode 11.4

Мы получаем сбой после исключения всех модульных тестов, когда включено покрытие кода. Пожалуйста, найдите трассировку стека ниже

Crashed Thread:        0  ReceiverMainThread  Dispatch queue: com.apple.main-thread


Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       EXC_I386_GPFLT
Exception Note:        EXC_CORPSE_NOTIFY


Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [41136]


Application Specific Information:
CoreSimulator 704.12 - Device: iPad Pro (12.9-inch) (3rd generation) (C0064E72-B310-4A5B-82BE-BCC12D3E4D46) - Runtime: iOS 13.4 (17E255) - DeviceType: iPad Pro (12.9-inch) (3rd generation)


Thread 0 Crashed:: ReceiverMainThread  Dispatch queue: com.apple.main-thread
0   com.ios.Dev     0x000000010ea6f368 initializeValueProfRuntimeRecord + 56
1  com.ios.Dev     0x000000010ea733aa writeOneValueProfData + 170
2   com.ios.Dev     0x000000010ea7323b lprofWriteDataImpl + 683
3   com.ios.Dev     0x000000010ea72f7d lprofWriteData + 109
4   com.ios.Dev     0x000000010ea7151a writeFile + 714
5   com.ios.Dev     0x000000010ea7118f __llvm_profile_write_file + 1007
6   libsystem_c.dylib             0x00007fff51a65a38 __cxa_finalize_ranges + 326
7   libsystem_c.dylib             0x00007fff51a65d56 exit + 48
8   com.apple.dt.XCTest           0x00000001124ea721 _XCTestMain + 2709
9   libXCTestBundleInject.dylib   0x000000011138abfa __RunTests_block_invoke_2 + 13
10  com.apple.CoreFoundation       0x00007fff23da1a9c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
11  com.apple.CoreFoundation       0x00007fff23da1193 __CFRunLoopDoBlocks + 195
12  com.apple.CoreFoundation       0x00007fff23d9bf83 __CFRunLoopRun + 995
13  com.apple.CoreFoundation       0x00007fff23d9b884 CFRunLoopRunSpecific + 404
14  com.apple.GeoServices         0x00007fff38b5ac1a GSEventRunModal + 139
15  com.apple.UIKitCore           0x00007fff48c19220 UIApplicationMain + 1605
16  com.ios.Dev     0x000000010e7be223 main + 430 (main.m:125)
17  libdyld.dylib                 0x00007fff519b910d start + 1

Этот сбой происходит только в XCode 11.4, если включено покрытие кода. Если покрытие кода отключено, оно работает нормально, но нам нужно покрытие кода после выполнения модульных тестов. В Xcode 11.3 модульные тесты выполнялись нормально с включенным покрытием кода. Может ли кто-нибудь сообщить нам решение этой проблемы. Заранее спасибо.

Изменить: разрешение

Для нас изменение типа Macho-O-Type одной из зависимостей с перемещаемого объектного файла на статическую библиотеку решило проблему. Но не уверен, что это единственная причина проблемы, поскольку причин может быть несколько.

3 ответа

Попробуйте с отключенной проверкой основного потока

Попробуйте отключить покрытие кода. это помогает в моем случае

У меня точно такая же проблема, и я все еще страдаю от Xcode 11.4.1. Я также видел, как вы @Arjuna писали на форуме разработчиков Apple:

https://forums.developer.apple.com/thread/131988

Я пока не нашел решения, но думаю, что это связано с функциями, представленными в Xcode 11.4

https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_release_notes

После Releases Notes у нас есть:

When building a scheme that has been converted to use test plans and whose active test plan has code coverage enabled, Xcode now includes code coverage instrumentation when building for the ‘Run’ action, in addition to the ‘Test’ action. This matches the behavior of building schemes which don’t use test plans and have code coverage enabled, and avoids unnecessary rebuilds when alternating between running and testing actions. (57367856)

Я почти уверен, что это как-то связано с этим, но я все еще не могу найти способ исправить это.

Другие вопросы по тегам