swiftlang / swift

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

[SR-15726] -assert-config Debug with release configuration crashes compiler on linux #58003

Open dnadoba opened 2 years ago

dnadoba commented 2 years ago
Previous ID SR-15726
Radar rdar://problem/87541448
Original Reporter @dnadoba
Type Bug
Environment OS: Ubuntu 18.04.6 LTS (Bionic Beaver) Swift version 5.5.2 (swift-5.5.2-RELEASE) and nightly Swift version 5.6-dev (LLVM 7b20e61dd04138a, Swift 9438cf6b2e83c5f) Target: x86_64-unknown-linux-gnu
Additional Detail from JIRA | | | |------------------|-----------------| |Votes | 0 | |Component/s | | |Labels | Bug | |Assignee | None | |Priority | Medium | md5: ef7126afae53f7acc9a6db0c25ca37f5

Issue Description:

When building apple/swift-protobuf version 1.18.0 with

swift build -c release -Xswiftc -assert-config -Xswiftc Debug

the compiler crashes:

root@f8bbbf111e60:/src# swift build  --configuration release -Xswiftc -assert-config -Xswiftc Debug
Begin Error in Function: '$ss32_copyCollectionToContiguousArrayys0dE0Vy7ElementQzGxSlRzlFSS_Tgq5'
Error! Found a leak due to a consuming post-dominance failure!
Value: %256 = argument of bb33 : $Optional<Character>    // users: %266, %257
Post Dominating Failure Blocks:
bb34
End Error in Function: '$ss32_copyCollectionToContiguousArrayys0dE0Vy7ElementQzGxSlRzlFSS_Tgq5'
Found ownership error?!
triggering standard assertion failure routine
UNREACHABLE executed at /home/buildnode/jenkins/workspace/oss-swift-5.5-package-linux-ubuntu-18_04/swift/lib/SIL/Verifier/LinearLifetimeCheckerPrivate.h:211!
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.
Stack dump:
0.  Program arguments: /usr/bin/swift-frontend -frontend -c /src/Sources/SwiftProtobuf/AnyMessageStorage.swift /src/Sources/SwiftProtobuf/AnyUnpackError.swift /src/Sources/SwiftProtobuf/BinaryDecoder.swift /src/Sources/SwiftProtobuf/BinaryDecodingError.swift /src/Sources/SwiftProtobuf/BinaryDecodingOptions.swift /src/Sources/SwiftProtobuf/BinaryDelimited.swift /src/Sources/SwiftProtobuf/BinaryEncoder.swift /src/Sources/SwiftProtobuf/BinaryEncodingError.swift /src/Sources/SwiftProtobuf/BinaryEncodingSizeVisitor.swift /src/Sources/SwiftProtobuf/BinaryEncodingVisitor.swift /src/Sources/SwiftProtobuf/CustomJSONCodable.swift /src/Sources/SwiftProtobuf/Data+Extensions.swift /src/Sources/SwiftProtobuf/Decoder.swift /src/Sources/SwiftProtobuf/DoubleParser.swift /src/Sources/SwiftProtobuf/Enum.swift /src/Sources/SwiftProtobuf/ExtensibleMessage.swift /src/Sources/SwiftProtobuf/ExtensionFieldValueSet.swift /src/Sources/SwiftProtobuf/ExtensionFields.swift /src/Sources/SwiftProtobuf/ExtensionMap.swift /src/Sources/SwiftProtobuf/FieldTag.swift /src/Sources/SwiftProtobuf/FieldTypes.swift /src/Sources/SwiftProtobuf/Google_Protobuf_Any+Extensions.swift /src/Sources/SwiftProtobuf/Google_Protobuf_Any+Registry.swift /src/Sources/SwiftProtobuf/Google_Protobuf_Duration+Extensions.swift /src/Sources/SwiftProtobuf/Google_Protobuf_FieldMask+Extensions.swift /src/Sources/SwiftProtobuf/Google_Protobuf_ListValue+Extensions.swift /src/Sources/SwiftProtobuf/Google_Protobuf_NullValue+Extensions.swift /src/Sources/SwiftProtobuf/Google_Protobuf_Struct+Extensions.swift /src/Sources/SwiftProtobuf/Google_Protobuf_Timestamp+Extensions.swift /src/Sources/SwiftProtobuf/Google_Protobuf_Value+Extensions.swift /src/Sources/SwiftProtobuf/Google_Protobuf_Wrappers+Extensions.swift /src/Sources/SwiftProtobuf/HashVisitor.swift /src/Sources/SwiftProtobuf/Internal.swift /src/Sources/SwiftProtobuf/JSONDecoder.swift /src/Sources/SwiftProtobuf/JSONDecodingError.swift /src/Sources/SwiftProtobuf/JSONDecodingOptions.swift /src/Sources/SwiftProtobuf/JSONEncoder.swift /src/Sources/SwiftProtobuf/JSONEncodingError.swift /src/Sources/SwiftProtobuf/JSONEncodingOptions.swift /src/Sources/SwiftProtobuf/JSONEncodingVisitor.swift /src/Sources/SwiftProtobuf/JSONMapEncodingVisitor.swift /src/Sources/SwiftProtobuf/JSONScanner.swift /src/Sources/SwiftProtobuf/MathUtils.swift /src/Sources/SwiftProtobuf/Message+AnyAdditions.swift /src/Sources/SwiftProtobuf/Message+BinaryAdditions.swift /src/Sources/SwiftProtobuf/Message+JSONAdditions.swift /src/Sources/SwiftProtobuf/Message+JSONArrayAdditions.swift /src/Sources/SwiftProtobuf/Message+TextFormatAdditions.swift /src/Sources/SwiftProtobuf/Message.swift /src/Sources/SwiftProtobuf/MessageExtension.swift /src/Sources/SwiftProtobuf/NameMap.swift /src/Sources/SwiftProtobuf/ProtoNameProviding.swift /src/Sources/SwiftProtobuf/ProtobufAPIVersionCheck.swift /src/Sources/SwiftProtobuf/ProtobufMap.swift /src/Sources/SwiftProtobuf/SelectiveVisitor.swift /src/Sources/SwiftProtobuf/SimpleExtensionMap.swift /src/Sources/SwiftProtobuf/StringUtils.swift /src/Sources/SwiftProtobuf/TextFormatDecoder.swift /src/Sources/SwiftProtobuf/TextFormatDecodingError.swift /src/Sources/SwiftProtobuf/TextFormatDecodingOptions.swift /src/Sources/SwiftProtobuf/TextFormatEncoder.swift /src/Sources/SwiftProtobuf/TextFormatEncodingOptions.swift /src/Sources/SwiftProtobuf/TextFormatEncodingVisitor.swift /src/Sources/SwiftProtobuf/TextFormatScanner.swift /src/Sources/SwiftProtobuf/TimeUtils.swift /src/Sources/SwiftProtobuf/UnknownStorage.swift /src/Sources/SwiftProtobuf/UnsafeBufferPointer+Shims.swift /src/Sources/SwiftProtobuf/UnsafeRawPointer+Shims.swift /src/Sources/SwiftProtobuf/Varint.swift /src/Sources/SwiftProtobuf/Version.swift /src/Sources/SwiftProtobuf/Visitor.swift /src/Sources/SwiftProtobuf/WireFormat.swift /src/Sources/SwiftProtobuf/ZigZag.swift /src/Sources/SwiftProtobuf/any.pb.swift /src/Sources/SwiftProtobuf/api.pb.swift /src/Sources/SwiftProtobuf/descriptor.pb.swift /src/Sources/SwiftProtobuf/duration.pb.swift /src/Sources/SwiftProtobuf/empty.pb.swift /src/Sources/SwiftProtobuf/field_mask.pb.swift /src/Sources/SwiftProtobuf/source_context.pb.swift /src/Sources/SwiftProtobuf/struct.pb.swift /src/Sources/SwiftProtobuf/timestamp.pb.swift /src/Sources/SwiftProtobuf/type.pb.swift /src/Sources/SwiftProtobuf/wrappers.pb.swift -supplementary-output-file-map /tmp/TemporaryDirectory.Ns60II/supplementaryOutputs-1 -target x86_64-unknown-linux-gnu -disable-objc-interop -I /src/.build/x86_64-unknown-linux-gnu/release -assert-config Debug -color-diagnostics -g -module-cache-path /src/.build/x86_64-unknown-linux-gnu/release/ModuleCache -swift-version 5 -O -D SWIFT_PACKAGE -new-driver-path /usr/bin/swift-driver -resource-dir /usr/lib/swift -module-name SwiftProtobuf -parse-as-library -num-threads 2 -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/AnyMessageStorage.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/AnyUnpackError.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryDecoder.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryDecodingError.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryDecodingOptions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryDelimited.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryEncoder.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryEncodingError.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryEncodingSizeVisitor.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryEncodingVisitor.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/CustomJSONCodable.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Data+Extensions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Decoder.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/DoubleParser.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Enum.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/ExtensibleMessage.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/ExtensionFieldValueSet.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/ExtensionFields.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/ExtensionMap.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/FieldTag.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/FieldTypes.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Any+Extensions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Any+Registry.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Duration+Extensions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_FieldMask+Extensions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_ListValue+Extensions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_NullValue+Extensions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Struct+Extensions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Timestamp+Extensions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Value+Extensions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Wrappers+Extensions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/HashVisitor.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Internal.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONDecoder.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONDecodingError.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONDecodingOptions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONEncoder.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONEncodingError.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONEncodingOptions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONEncodingVisitor.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONMapEncodingVisitor.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONScanner.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/MathUtils.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+AnyAdditions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+BinaryAdditions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+JSONAdditions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+JSONArrayAdditions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+TextFormatAdditions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Message.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/MessageExtension.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/NameMap.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/ProtoNameProviding.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/ProtobufAPIVersionCheck.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/ProtobufMap.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/SelectiveVisitor.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/SimpleExtensionMap.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/StringUtils.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatDecoder.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatDecodingError.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatDecodingOptions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatEncoder.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatEncodingOptions.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatEncodingVisitor.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatScanner.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/TimeUtils.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/UnknownStorage.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/UnsafeBufferPointer+Shims.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/UnsafeRawPointer+Shims.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Varint.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Version.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/Visitor.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/WireFormat.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/ZigZag.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/any.pb.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/api.pb.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/descriptor.pb.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/duration.pb.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/empty.pb.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/field_mask.pb.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/source_context.pb.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/struct.pb.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/timestamp.pb.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/type.pb.swift.o -o /src/.build/x86_64-unknown-linux-gnu/release/SwiftProtobuf.build/wrappers.pb.swift.o
1.  Swift version 5.5.2 (swift-5.5.2-RELEASE)
2.  
3.  While evaluating request ExecuteSILPipelineRequest(Run pipelines { PrepareOptimizationPasses, EarlyModulePasses, HighLevel,Function+EarlyLoopOpt, HighLevel,Module+StackPromote, Serialize, MidLevel,Function, ClosureSpecialize, LowLevel,Function, LateLoopOpt, SIL Debug Info Generator } on SIL for SwiftProtobuf.SwiftProtobuf)
4.  While running pass #&#8203;40330 SILFunctionTransform "NonTransparentFunctionOwnershipModelEliminator" on SILFunction "@$ss32_copyCollectionToContiguousArrayys0dE0Vy7ElementQzGxSlRzlFSS_Tgq5".
 for <<debugloc at "<compiler-generated>":0:0>>5.   Found verification error when verifying before lowering ownership. Please re-run with -sil-verify-all to identify the actual pass that introduced the verification error.
6.  While verifying SIL function "@$ss32_copyCollectionToContiguousArrayys0dE0Vy7ElementQzGxSlRzlFSS_Tgq5".
 for <<debugloc at "<compiler-generated>":0:0>>Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
/usr/bin/swift-frontend[0x5c5fd13]
/usr/bin/swift-frontend[0x5c5da6e]
/usr/bin/swift-frontend[0x5c6009c]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x12980)[0x7f5c9bae5980]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7)[0x7f5c9a387fb7]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x141)[0x7f5c9a389921]
/usr/bin/swift-frontend[0x5ba1396]
/usr/bin/swift-frontend[0x7d87a4]
/usr/bin/swift-frontend[0x7da1b9]
/usr/bin/swift-frontend[0x7d5d4c]
/usr/bin/swift-frontend[0x7d6547]
/usr/bin/swift-frontend[0x7dc14c]
/usr/bin/swift-frontend[0x7de2e1]
/usr/bin/swift-frontend[0x7de17b]
/usr/bin/swift-frontend[0x805d4d]
/usr/bin/swift-frontend[0x7e95ad]
/usr/bin/swift-frontend[0x7e7c1c]
/usr/bin/swift-frontend[0x7dfb5c]
/usr/bin/swift-frontend[0x124f79b]
/usr/bin/swift-frontend[0xddf292]
/usr/bin/swift-frontend[0xde0171]
/usr/bin/swift-frontend[0xde34ce]
/usr/bin/swift-frontend[0xddd168]
/usr/bin/swift-frontend[0xddd11b]
/usr/bin/swift-frontend[0xdfa54a]
/usr/bin/swift-frontend[0xde87d4]
/usr/bin/swift-frontend[0xddd335]
/usr/bin/swift-frontend[0xdea3ef]
/usr/bin/swift-frontend[0x71c39d]
/usr/bin/swift-frontend[0x56dadf]
/usr/bin/swift-frontend[0x56d5f7]
/usr/bin/swift-frontend[0x56135e]
/usr/bin/swift-frontend[0x4b0646]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x7f5c9a36abf7]
/usr/bin/swift-frontend[0x4b027a]
root@f8bbbf111e60:/src# 

Swift Protobuf Repository: https://github.com/apple/swift-protobuf/releases/tag/1.18.0
Note: crash only observed on Linux and not on mac

dnadoba commented 2 years ago

@swift-ci create