swiftlang / swift

The Swift Programming Language
https://swift.org
Apache License 2.0
67.31k stars 10.34k forks source link

[SR-14514] Abort trap: 6 #56866

Open swift-ci opened 3 years ago

swift-ci commented 3 years ago
Previous ID SR-14514
Radar rdar://problem/76977327
Original Reporter vani2 (JIRA User)
Type Bug

Attachment: Download

Environment macOS BugSur 11.2.3 (20D91), MacBook Pro (13-inch M1, 2020) Xcode Version 12.4 (12D4e) Apple Swift version 5.3.2 (swiftlang-1200.0.45 clang-1200.0.32.28) Target: arm64-apple-darwin20.3.0
Additional Detail from JIRA | | | |------------------|-----------------| |Votes | 0 | |Component/s | Compiler | |Labels | Bug | |Assignee | None | |Priority | Medium | md5: d26cff97322f966de55370664c0b8baa

Issue Description:

could not deserialize type for 'OnePointMapOrderRouter': top-level value not foundcould not deserialize type for 'OnePointMapOrderRouter': top-level value not foundCross-reference to module 'Abort_trap_example'... OnePointMapOrderViewController
Stack dump:0. Program arguments: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -merge-modules -emit-module /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/Router~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/OnePointMapOrderRouter~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/TwoPointsMapOrderViewController~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/MapOrderBottomPanelView~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/TwoPointsMapOrderPresenter~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/ViewController~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/MapOrderPresenter~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/TypeAliases~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/AppDelegate~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/OnePointMapOrderPresenter~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/OnePointMapOrderInteractor~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/MapOrderViewController~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/OrderProfileInfo~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/MapOrderRouter~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/ContainerViewController~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/MapOrderInteractor~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/TwoPointsMapOrderInteractor~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/OnePointMapOrderViewController~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/SceneDelegate~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/OnePointMapOrder~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/TwoPointsMapOrderRouter~partial.swiftmodule /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/MapAddress~partial.swiftmodule -parse-as-library -sil-merge-partial-modules -disable-diagnostic-passes -disable-sil-perf-optzns -target arm64-apple-ios13.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk -I /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Products/Debug-iphoneos -F /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Products/Debug-iphoneos -enable-testing -g -module-cache-path /Users/iv/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity=checked -Onone -D DEBUG -serialize-debugging-options -Xcc -working-directory -Xcc /Users/iv/Documents/Xcode/Abort trap example -enable-anonymous-context-mangled-names -Xcc -I/Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Abort trap example-generated-files.hmap -Xcc -I/Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Abort trap example-own-target-headers.hmap -Xcc -I/Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Abort trap example-all-target-headers.hmap -Xcc -iquote -Xcc /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Abort trap example-project-headers.hmap -Xcc -I/Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Products/Debug-iphoneos/include -Xcc -I/Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/DerivedSources-normal/arm64 -Xcc -I/Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/DerivedSources/arm64 -Xcc -I/Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/DerivedSources -Xcc -DDEBUG=1 -target-sdk-version 14.4 -emit-module-doc-path /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/Abort_trap_example.swiftdoc -emit-module-source-info-path /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/Abort_trap_example.swiftsourceinfo -emit-objc-header-path /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/Abort_trap_example-Swift.h -module-name Abort_trap_example -o /Users/iv/Library/Developer/Xcode/DerivedData/Abort_trap_example-cjhcwexavxyoedfyutylnumkuscv/Build/Intermediates.noindex/Abort trap example.build/Debug-iphoneos/Abort trap example.build/Objects-normal/arm64/Abort_trap_example.swiftmodule 1. Apple Swift version 5.3.2 (swiftlang-1200.0.45 clang-1200.0.32.28)0  swift                    0x00000001087dfbf0 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 521  swift                    0x00000001087ded48 llvm::sys::RunSignalHandlers() + 1282  swift                    0x00000001087e01ac SignalHandler(int) + 1603  libsystem_platform.dylib 0x0000000191c4dc44 _sigtramp + 564  libsystem_pthread.dylib  0x0000000191c05c24 pthread_kill + 2925  libsystem_c.dylib        0x0000000191b4d864 abort + 1046  swift                    0x000000010555906c swift::ModuleFile::readParameterList() + 07  swift                    0x0000000105594754 swift::SILDeserializer::readVTable(llvm::PointerEmbeddedInt<unsigned int, 31>) + 21488  swift                    0x0000000105600bf4 swift::SILDeserializer::getAll(bool) + 929  swift                    0x0000000104e080d4 swift::CompilerInstance::performSILProcessing(swift::SILModule*) + 26810 swift                    0x0000000104d0bd28 performCompileStepsPostSILGen(swift::CompilerInstance&, swift::CompilerInvocation const&, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, swift::PrimarySpecificPaths const&, int&, swift::FrontendObserver*) + 94411 swift                    0x0000000104cfdeb4 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 1849612 swift                    0x0000000104c948c0 main + 113213 libdyld.dylib            0x0000000191c21f34 start + 4error: Abort trap: 6 (in target 'Abort trap example' from project 'Abort trap example')

Changing compilation mode to whole module helps to get a successful build.

But later I discovered crashes at a start of my iOS app at iOS 12/13.

Anyway, IMO there are should be a descriptive error about what's wrong.

After some research, I found that happened because of the circular dependency between ViewController and Router, they both have generic to each other.

I attached a sample project where you can reproduce that error.

To remove the circular dependency you can change these two declarations

final class OnePointMapOrderRouter: Router<OnePointMapOrderViewController>, MapOrderRouter
final class TwoPointsMapOrderRouter: Router<TwoPointsMapOrderViewController>, MapOrderRouter

to these

final class OnePointMapOrderRouter: Router<ViewController>, MapOrderRouter
final class TwoPointsMapOrderRouter: Router<ViewController>, MapOrderRouter
typesanitizer commented 3 years ago

@swift-ci create

xymus commented 3 years ago

This is failing in the merge-module phase, we are moving away from relying on merge-module in incremental builds for issues like this one. Using the whole-module compilation mode is the best workaround currently available for compilers distributed with Xcode.

If you're interested to experiment with the open-source compiler, you can download a toolchain from https://swift.org/download/#snapshots and add the flag `-experimental-emit-module-separately` to the Other Swift Flag build settings of your project. This will turn on an alternative incremental build mode that is more parallelized and doesn't use the merge-module phase.

swift-ci commented 3 years ago

Comment by Ivan Vavilov (JIRA)

Yeah, I moved to the whole module for a while. But then I noticed crashes on iOS 12 and 13 on launch. So I changed my code a little bit, and that solved my problem.