swiftlang / swift

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

[SR-12741] TEST 'Swift(iphonesimulator-i386) :: AutoDiff/validation-test/control_flow.swift #55186

Open atrick opened 4 years ago

atrick commented 4 years ago
Previous ID SR-12741
Radar None
Original Reporter @atrick
Type Bug
Additional Detail from JIRA | | | |------------------|-----------------| |Votes | 0 | |Component/s | Compiler | |Labels | Bug | |Assignee | None | |Priority | Medium | md5: 27c35b6d4e19faf22e2e70a5d0333c44

Issue Description:

https://ci.swift.org/job/oss-swift_tools-RA_stdlib-RD_test-simulator//3152/consoleFull

https://ci.swift.org/job/oss-swift_tools-RA_stdlib-RDA_test-simulator/2651/console

******************** TEST 'Swift(iphonesimulator-i386) :: AutoDiff/validation-test/control_flow.swift' FAILED ********************
Script:
--
: 'RUN: at line 1';   rm -rf "/Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/Ninja-ReleaseAssert/swift-macosx-x86_64/test-iphonesimulator-i386/AutoDiff/validation-test/Output/control_flow.swift.tmp" && mkdir -p "/Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/Ninja-ReleaseAssert/swift-macosx-x86_64/test-iphonesimulator-i386/AutoDiff/validation-test/Output/control_flow.swift.tmp" && xcrun --toolchain default --sdk '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.4.sdk' /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/Ninja-ReleaseAssert/swift-macosx-x86_64/bin/swiftc -target i386-apple-ios7.0-simulator  -module-cache-path '/Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/Ninja-ReleaseAssert/swift-macosx-x86_64/swift-test-results/i386-apple-ios7.0-simulator/clang-module-cache' -F '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks' -toolchain-stdlib-rpath  -swift-version 4  -Xfrontend -ignore-module-source-info -Osize -module-cache-path '/Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/Ninja-ReleaseAssert/swift-macosx-x86_64/swift-test-results/i386-apple-ios7.0-simulator/clang-module-cache' /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/swift/test/AutoDiff/validation-test/control_flow.swift -o /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/Ninja-ReleaseAssert/swift-macosx-x86_64/test-iphonesimulator-i386/AutoDiff/validation-test/Output/control_flow.swift.tmp/a.out -module-name main  && codesign -f -s - /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/Ninja-ReleaseAssert/swift-macosx-x86_64/test-iphonesimulator-i386/AutoDiff/validation-test/Output/control_flow.swift.tmp/a.out && /usr/bin/env DYLD_LIBRARY_PATH='/Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/Ninja-ReleaseAssert/swift-macosx-x86_64/lib/swift/iphonesimulator' LD_LIBRARY_PATH='/Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/Ninja-ReleaseAssert/swift-macosx-x86_64/lib/swift/iphonesimulator:' SIMCTL_CHILD_DYLD_LIBRARY_PATH='/Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/Ninja-ReleaseAssert/swift-macosx-x86_64/lib/swift/iphonesimulator' xcrun --toolchain default --sdk '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.4.sdk' simctl spawn --standalone 'iPhone 5'  /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/Ninja-ReleaseAssert/swift-macosx-x86_64/test-iphonesimulator-i386/AutoDiff/validation-test/Output/control_flow.swift.tmp/a.out
--
Exit Code: 134

Command Output (stdout):
--
[ RUN      ] ControlFlow.Conditionals
stderr>>> Fatal error: file /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/swift/test/AutoDiff/validation-test/control_flow.swift, line 270
stderr>>> OK: saw expected "crashed: sigill"
[       OK ] ControlFlow.Conditionals
[ RUN      ] ControlFlow.NestedConditionals
[       OK ] ControlFlow.NestedConditionals
[ RUN      ] ControlFlow.Recursion
stdout>>> check failed at /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/swift/test/AutoDiff/validation-test/control_flow.swift, line 437
stdout>>> expected: 1.0 (of type Swift.Float)
stdout>>> actual: -nan (of type Swift.Float)
stdout>>> check failed at /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/swift/test/AutoDiff/validation-test/control_flow.swift, line 438
stdout>>> expected: 5.0 (of type Swift.Float)
stdout>>> actual: -nan (of type Swift.Float)
stdout>>> check failed at /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/swift/test/AutoDiff/validation-test/control_flow.swift, line 439
stdout>>> expected: 26.0 (of type Swift.Float)
stdout>>> actual: -nan (of type Swift.Float)
stdout>>> check failed at /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/swift/test/AutoDiff/validation-test/control_flow.swift, line 440
stdout>>> expected: 154.0 (of type Swift.Float)
stdout>>> actual: -nan (of type Swift.Float)
stdout>>> check failed at /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/swift/test/AutoDiff/validation-test/control_flow.swift, line 454
stdout>>> expected: 1.0 (of type Swift.Float)
stdout>>> actual: -nan (of type Swift.Float)
stdout>>> check failed at /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/swift/test/AutoDiff/validation-test/control_flow.swift, line 455
stdout>>> expected: 5.0 (of type Swift.Float)
stdout>>> actual: -nan (of type Swift.Float)
stdout>>> check failed at /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/swift/test/AutoDiff/validation-test/control_flow.swift, line 456
stdout>>> expected: 26.0 (of type Swift.Float)
stdout>>> actual: -nan (of type Swift.Float)
stdout>>> check failed at /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/swift/test/AutoDiff/validation-test/control_flow.swift, line 457
stdout>>> expected: 154.0 (of type Swift.Float)
stdout>>> actual: -nan (of type Swift.Float)
stdout>>> check failed at /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/swift/test/AutoDiff/validation-test/control_flow.swift, line 466
stdout>>> expected: 300.0 (of type Swift.Float)
stdout>>> actual: -nan (of type Swift.Float)
[     FAIL ] ControlFlow.Recursion
[ RUN      ] ControlFlow.Enums
[       OK ] ControlFlow.Enums
[ RUN      ] ControlFlow.Loops
[       OK ] ControlFlow.Loops
ControlFlow: Some tests failed, aborting
UXPASS: []
FAIL: ["Recursion"]
SKIP: []
To debug, run:
$ /Users/buildnode/jenkins/workspace/oss-swift_tools-RA_stdlib-RD_test-simulator/Ninja-ReleaseAssert/swift-macosx-x86_64/test-iphonesimulator-i386/AutoDiff/validation-test/Output/control_flow.swift.tmp/a.out --stdlib-unittest-in-process --stdlib-unittest-filter "Recursion"
atrick commented 4 years ago

Test temporarily disabled here

https://github.com/apple/swift/pull/31578

dan-zheng commented 4 years ago

I wonder if these test failures are not caught by "@swift-ci Please test"?
Are they tested only by continuous CI, not by PR CI?

dan-zheng commented 4 years ago

I tried building with the same preset as the CI invocation (buildbot,tools=RA,stdlib=RD), but it failed:

FAILED: lib/swift/iphoneos/arm64/libswiftCore.dylib
...
Undefined symbols for architecture arm64:
  "___isOSVersionAtLeast", referenced from:
      swift::initializeProtocolLookup() in ImageInspectionMachO.cpp.o
      swift::initializeProtocolConformanceLookup() in ImageInspectionMachO.cpp.o
      swift::initializeTypeMetadataRecordLookup() in ImageInspectionMachO.cpp.o
      swift::initializeDynamicReplacementLookup() in ImageInspectionMachO.cpp.o
ld: symbol(s) not found for architecture arm64
atrick commented 4 years ago

My best guess is that this only happens with debug (unoptimized) standard library.

@shahmishal any advice for an external contributor trying to test the simulator-i386 configuration?

atrick commented 4 years ago

Could this be that you don't have Xcode 11.4 11E146?

Someone recently worked around this temporarily by editting ImageInspectionMachO.cpp and commenting out the call to __builtin_available()

aschwaighofer commented 4 years ago

When I ran into this issue in the past, I worked around this in the past by something like the following change.

diff --git a/stdlib/public/runtime/ImageInspectionMachO.cpp b/stdlib/public/runtime/ImageInspectionMachO.cpp
index 81ee6ed3079..6468bbc3bbf 100644
--- a/stdlib/public/runtime/ImageInspectionMachO.cpp
+++ b/stdlib/public/runtime/ImageInspectionMachO.cpp
@@ -121,7 +121,8 @@ void addImageCallback2Sections(const mach_header *mh, intptr_t vmaddr_slide) {

 } // end anonymous namespace

-#if OBJC_ADDLOADIMAGEFUNC_DEFINED
+
+#if 0
 #define REGISTER_FUNC(...)                                               \
   if (__builtin_available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)) { \
     objc_addLoadImageFunc(__VA_ARGS__);  
dan-zheng commented 4 years ago

I am actually using Xcode 11.4 (11E146).

Thanks aschwaighofer@apple.com (JIRA User)! I tried the workaround but now encounter a different error:

FAILED: lib/swift/iphonesimulator/x86_64/libswiftCore.dylib
...
ld: warning: static initializer found in 'stdlib/public/runtime/CMakeFiles/swiftRuntime-iphonesimulator-x86_64.dir/BackDeployment.cpp.o'. Use -no_inits to make this an error.  Use -no_warn_inits to suppress warning
ld: warning: static initializer found in 'stdlib/public/runtime/CMakeFiles/swiftRuntime-iphonesimulator-x86_64.dir/MetadataLookup.cpp.o'. Use -no_inits to make this an error.  Use -no_warn_inits to suppress warning
ld: warning: static initializer found in 'stdlib/public/stubs/CMakeFiles/swiftStdlibStubs-iphonesimulator-x86_64.dir/GlobalObjects.cpp.o'. Use -no_inits to make this an error.  Use -no_warn_inits to suppress warning
Undefined symbols for architecture x86_64:
  "___truncdfhf2", referenced from:
      protocol witness for Swift.BinaryFloatingPoint.init(Swift.Double) -> A in conformance Swift.Float16 : Swift.BinaryFloatingPoint in Swift in Swift.o
      Swift.Float16.init(Swift.Double) -> Swift.Float16 in Swift.o
      Swift.Float16.init(exactly: Swift.Double) -> Swift.Float16? in Swift.o
  "___truncsfhf2", referenced from:
      Swift.Float16.init(Swift.Float) -> Swift.Float16 in Swift.o
      Swift.Float16.isInfinite.getter : Swift.Bool in Swift.o
      protocol witness for Swift.Decodable.init(from: Swift.Decoder) throws -> A in conformance Swift.Float16 : Swift.Decodable in Swift in Swift.o
      generic specialization <Swift.Float16> of (extension in Swift):Swift.FloatingPoint.floatingPointClass.getter : Swift.FloatingPointClassification in Swift.o
      generic partial specialization <Signature = @escaping @convention(thin) @convention(method) <A><A1 where A == Swift.Float16, A1: Swift.BinaryFloatingPoint> (@in_guaranteed A1, @unowned @thick Swift.Float16.Type) -> (@out Swift.Float16, @unowned Swift.Bool)> of static (extension in Swift):Swift.BinaryFloatingPoint._convert<A where A1: Swift.BinaryFloatingPoint>(from: A1) -> (value: A, exact: Swift.Bool) in Swift.o
      generic specialization <Swift.Float16> of (extension in Swift):Swift.BinaryFloatingPoint.isTotallyOrdered(belowOrEqualTo: A) -> Swift.Bool in Swift.o
      Swift.Float16.init(_builtinFloatLiteral: Builtin.FPIEEE80) -> Swift.Float16 in Swift.o
      ...
  "___extendhfsf2", referenced from:
      Swift.Float16.init(Swift.Float) -> Swift.Float16 in Swift.o
      protocol witness for Swift.Encodable.encode(to: Swift.Encoder) throws -> () in conformance Swift.Float16 : Swift.Encodable in Swift in Swift.o
      generic partial specialization <Signature = @escaping @convention(thin) @convention(method) <A><A1 where A == Swift.Float16, A1: Swift.BinaryFloatingPoint> (@in_guaranteed A1, @unowned @thick Swift.Float16.Type) -> (@out Swift.Float16, @unowned Swift.Bool)> of static (extension in Swift):Swift.BinaryFloatingPoint._convert<A where A1: Swift.BinaryFloatingPoint>(from: A1) -> (value: A, exact: Swift.Bool) in Swift.o
      generic specialization <Swift.Float16> of (extension in Swift):Swift.BinaryFloatingPoint.isTotallyOrdered(belowOrEqualTo: A) -> Swift.Bool in Swift.o
      Swift.Float16.init(_builtinFloatLiteral: Builtin.FPIEEE80) -> Swift.Float16 in Swift.o
      protocol witness for Swift.CustomStringConvertible.description.getter : Swift.String in conformance Swift.Float16 : Swift.CustomStringConvertible in Swift in Swift.o
      protocol witness for Swift.CustomDebugStringConvertible.debugDescription.getter : Swift.String in conformance Swift.Float16 : Swift.CustomDebugStringConvertible in Swift in Swift.o
      ...
ld: symbol(s) not found for architecture x86_64

Have you seen this error before?
Unassigning self until I can build and reproduce the error locally.

atrick commented 4 years ago

Dumbest suggestion ever: make sure you do a clean build or at least 'build-script --reconfigure'

It seems that the Autodiff tests will be perpetually broken on 32-bit platforms if you're not locally testing that. That's just a headache for everyone. I recommend using REQUIRES: OS=..., REQUIRES: CPU=..., and/or REQUIRES: PTRSIZE=... if you don't want to support other platforms.

dan-zheng commented 4 years ago

Thanks for the suggestions!
I did indeed try clean builds. I'm using Xcode 11.4 (11E146) on macOS 10.15.4.
I would love to figure out these build errors so I can test 32-bit platforms locally. Any tips would be appreciated. I might post on the forums for help.