> On Apr 13, 2016, at 9:09 PM, Jens Alfke via swift-users > <swift-users@swift.org> wrote: > > Just ran into a weird crash with Swift 2.2 in Xcode 7.3. It reproduces in a > playground: > > import Foundation > let a = [88] > let b: [Any] = a // CRASH > > In my real program, the top of the crash backtrace is: > > * thread #1: tid = 0x460b62, 0x000000010669988b > libswiftCore.dylib`swift_unknownRetain + 27, queue = 'com.apple.main-thread', > stop reason = EXC_BAD_ACCESS (code=1, address=0x58) > frame #0: 0x000000010669988b libswiftCore.dylib`swift_unknownRetain + 27 > frame #1: 0x0000000106488565 > libswiftCore.dylib`Swift._arrayConditionalBridgeElements <A, B> > (Swift.Array<A>) -> Swift.Optional<Swift.Array<B>> + 1029 > frame #2: 0x00000001064875a7 libswiftCore.dylib`Swift._arrayForceCast <A, > B> (Swift.Array<A>) -> Swift.Array<B> + 263 > > It’s interesting that the memory address causing the crash is 0x58, which in > decimal is 88, the first item in the array. If you change the first item of > the array to a different number, the crash address changes to match. So it’s > misinterpreting the integer as a pointer. > > Also interestingly, if you remove “import Foundation”, it no longer compiles > — the last line gets an error “Cannot convert value of type ‘[Int]’ to > expected argument type ‘[Any]’”. Is boxing of integers really dependent on > Obj-C bridging? > > —Jens > > PS: Should I file the bug report with Apple or at swift.org?
This is a known bug. Converting arrays of value type to arrays of protocol type is not supported—only class covariance is supported with containers—but the compiler fails to catch some cases. -Joe _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users