Error: Abort trap: 6 when building the project with Swift 5 compiler

Can someone give me a hint what this error message could potentially mean? Our project (in Swift 4.2 mode) does not compiler because of this issue:

---
2.	While deserializing SIL function "$s3App18ImageControlCenterC12SettingsCellCfD"
3.	While deserializing 'SettingsCell' (ClassDecl #1) in 'App'
4.	While deserializing decl #108 (XREF) in 'App'
5.	Cross-reference to module 'App'
	... ImageControlCenter
	... in an extension in module 'App'
	... BaseCell
6.	If you're seeing a crash here, try passing -Xfrontend -disable-serialization-nested-type-lookup-table
7.	While loading extensions for 'ImageControlCenter' (in module 'App')
8.	While reading from 'App'
9.	While deserializing extension of 'ImageControlCenter' (ExtensionDecl #23) in 'App'
0  swift                    0x000000010c384ee3 PrintStackTraceSignalHandler(void*) + 51
1  swift                    0x000000010c3846bc SignalHandler(int) + 348
2  libsystem_platform.dylib 0x00007fff57dbab3d _sigtramp + 29
3  libsystem_platform.dylib 0x00007f9e201ed400 _sigtramp + 3359844576
4  libsystem_c.dylib        0x00007fff57c781c9 abort + 127
5  swift                    0x0000000109504120 swift::ModuleFile::fatal(llvm::Error) + 1856
6  swift                    0x0000000109511749 swift::ModuleFile::getDeclCheckedImpl(llvm::PointerEmbeddedInt<unsigned int, 31>) + 53689
7  swift                    0x00000001095b2a09 swift::SerializedModuleLoaderBase::loadExtensions(swift::NominalTypeDecl*, unsigned int) + 2537
8  swift                    0x000000010951aa9d swift::ModuleFile::resolveCrossReference(swift::ModuleDecl*, unsigned int) + 6493
9  swift                    0x0000000109508c4f swift::ModuleFile::getDeclCheckedImpl(llvm::PointerEmbeddedInt<unsigned int, 31>) + 18111
10 swift                    0x0000000109513809 swift::ModuleFile::getTypeChecked(llvm::PointerEmbeddedInt<unsigned int, 31>) + 4233
11 swift                    0x000000010950cc6f swift::ModuleFile::getDeclCheckedImpl(llvm::PointerEmbeddedInt<unsigned int, 31>) + 34527
12 swift                    0x0000000109513809 swift::ModuleFile::getTypeChecked(llvm::PointerEmbeddedInt<unsigned int, 31>) + 4233
13 swift                    0x0000000109514f48 swift::ModuleFile::getTypeChecked(llvm::PointerEmbeddedInt<unsigned int, 31>) + 10184
14 swift                    0x000000010952826f swift::SILDeserializer::readSILFunctionChecked(llvm::PointerEmbeddedInt<unsigned int, 31>, swift::SILFunction*, llvm::StringRef, bool, bool) + 575
15 swift                    0x000000010953c525 swift::SILDeserializer::getAllSILFunctions() + 1349
16 swift                    0x00000001095bea64 swift::SerializedSILLoader::getAllForModule(swift::Identifier, swift::FileUnit*) + 180
17 swift                    0x00000001081e5c01 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 35921
18 swift                    0x00000001081d96de swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 6862
19 swift                    0x00000001081777be main + 1246
20 libdyld.dylib            0x00007fff57bcfed9 start + 1
error: Abort trap: 6

The hierarchy here looks like this:

final class ImageControlCenter: UIViewController {}
// other file
extension ImageControlCenter {
  class BaseCell : UICollectionViewCell {}
}
// yet another file
extension ImageControlCenter {
  final class SettingsCell : BaseCell {}
}

App is the name of the project module.

The project compiles just fine with the Swift 4.2.1 compiler.

If I change the hierarchy to:

final class ImageControlCenter: UIViewController {}
// other file
extension ImageControlCenter {
  class BaseCell : UICollectionViewCell {}
}
// yet another file
extension ImageControlCenter {
  typealias SettingCell = ImageControlCenterSettingsCell
}
final class ImageControlCenterSettingsCell : ImageControlCenter.BaseCell {}

The error changes to:

---
2.	While deserializing SIL function "$s3App30ImageControlCenterSettingsCellC5coderACSgSo7NSCoderC_tcfC"
3.	While deserializing 'ImageControlCenterSettingsCell' (ClassDecl #1) in 'App'
4.	While deserializing decl #109 (XREF) in 'App'
5.	Cross-reference to module 'App'
	... ImageControlCenter
	... in an extension in module 'App'
	... BaseCell
6.	If you're seeing a crash here, try passing -Xfrontend -disable-serialization-nested-type-lookup-table
7.	While loading extensions for 'ImageControlCenter' (in module 'App')
8.	While reading from 'App'
9.	While deserializing extension of 'ImageControlCenter' (ExtensionDecl #23) in 'App'
0  swift                    0x0000000112302ee3 PrintStackTraceSignalHandler(void*) + 51
1  swift                    0x00000001123026bc SignalHandler(int) + 348
2  libsystem_platform.dylib 0x00007fff57dbab3d _sigtramp + 29
3  swift                    0x0000000112cbf008 (anonymous namespace)::DarwinX86AsmBackend::getCompactUnwindRegNum(unsigned int) const::CU32BitRegs + 112258
4  libsystem_c.dylib        0x00007fff57c781c9 abort + 127
5  swift                    0x000000010f482120 swift::ModuleFile::fatal(llvm::Error) + 1856
6  swift                    0x000000010f48f749 swift::ModuleFile::getDeclCheckedImpl(llvm::PointerEmbeddedInt<unsigned int, 31>) + 53689
7  swift                    0x000000010f530a09 swift::SerializedModuleLoaderBase::loadExtensions(swift::NominalTypeDecl*, unsigned int) + 2537
8  swift                    0x000000010f498a9d swift::ModuleFile::resolveCrossReference(swift::ModuleDecl*, unsigned int) + 6493
9  swift                    0x000000010f486c4f swift::ModuleFile::getDeclCheckedImpl(llvm::PointerEmbeddedInt<unsigned int, 31>) + 18111
10 swift                    0x000000010f491809 swift::ModuleFile::getTypeChecked(llvm::PointerEmbeddedInt<unsigned int, 31>) + 4233
11 swift                    0x000000010f48ac6f swift::ModuleFile::getDeclCheckedImpl(llvm::PointerEmbeddedInt<unsigned int, 31>) + 34527
12 swift                    0x000000010f491809 swift::ModuleFile::getTypeChecked(llvm::PointerEmbeddedInt<unsigned int, 31>) + 4233
13 swift                    0x000000010f491a26 swift::ModuleFile::getTypeChecked(llvm::PointerEmbeddedInt<unsigned int, 31>) + 4774
14 swift                    0x000000010f492f48 swift::ModuleFile::getTypeChecked(llvm::PointerEmbeddedInt<unsigned int, 31>) + 10184
15 swift                    0x000000010f4a626f swift::SILDeserializer::readSILFunctionChecked(llvm::PointerEmbeddedInt<unsigned int, 31>, swift::SILFunction*, llvm::StringRef, bool, bool) + 575
16 swift                    0x000000010f4ba525 swift::SILDeserializer::getAllSILFunctions() + 1349
17 swift                    0x000000010f53ca64 swift::SerializedSILLoader::getAllForModule(swift::Identifier, swift::FileUnit*) + 180
18 swift                    0x000000010e163c01 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 35921
19 swift                    0x000000010e1576de swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 6862
20 swift                    0x000000010e0f57be main + 1246
21 libdyld.dylib            0x00007fff57bcfed9 start + 1
22 libdyld.dylib            0x0000000000000079 start + 2822963617
error: Abort trap: 6

The workaround it to move the BaseCell out of the extension and sub-class by the concrete type name instead of the type alias typealias BaseCell = ImageControlCenterBaseCell.

cc @Slava_Pestov could this be related to the work that was done related to SR-631?

@DevAndArtist please file a bug at https://bugs.swift.org about this.

Will do.

1 Like