<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Oct 4, 2016, at 10:11 AM, Jordan Rose via swift-dev &lt;<a href="mailto:swift-dev@swift.org" class="">swift-dev@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">In HuonW’s&nbsp;<a href="https://github.com/apple/swift/pull/4814" class="">recent pull request</a>&nbsp;we&nbsp;<a href="https://ci.swift.org/job/swift-PR-osx/3922/" class="">hit an unusual error</a>:<div class=""><br class=""></div><div class=""><div class=""></div><blockquote type="cite" class=""><div class="">2016-10-03 12:34:08.112 swift[56714:13650955] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -length only defined for abstract class. &nbsp;Define -[_TtCs19_NSContiguousString length]!'</div><div class="">*** First throw call stack:</div><div class="">(</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>0 &nbsp; CoreFoundation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00007fff9cbe64f2 __exceptionPreprocess + 178</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>1 &nbsp; libobjc.A.dylib &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x00007fff9daaa73c objc_exception_throw + 48</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>2 &nbsp; CoreFoundation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00007fff9cc4d4bd +[NSException raise:format:] + 205</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>3 &nbsp; Foundation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00007fff943e8dbd NSRequestConcreteImplementation + 229</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>4 &nbsp; Foundation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00007fff9442588a -[NSString length] + 19</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>5 &nbsp; CoreFoundation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x00007fff9cc2b613 CFStringHashNSString + 51</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>6 &nbsp; libswiftCore.dylib &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0000000114f7ef56 _TTSfq4s___TFSSg9hashValueSi + 118</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>7 &nbsp; libswiftCore.dylib &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0000000114f3b96b _TTWSSs8HashablesFS_g9hashValueSi + 43</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>8 &nbsp; libswiftCore.dylib &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0000000114e8f0a2 _TFVs24_NativeDictionaryStorage7_bucketfxSi + 34</div></blockquote><br class=""></div><div class="">We’re not really sure how this could happen, though. _NSContiguousString&nbsp;<a href="https://github.com/apple/swift/blob/master/stdlib/public/core/StringBridge.swift#L221" class="">certainly <i class="">does</i>&nbsp;implement -length</a>, and even though there’s an&nbsp;<a href="https://github.com/apple/swift/pull/5071" class="">outstanding PR</a>&nbsp;to change it to a property that shouldn’t cause this kind of issue. (It’s not marked @objc, but it shouldn’t need to be because&nbsp;<a href="https://github.com/apple/swift/blob/master/stdlib/public/core/StringBridge.swift#L184-L191" class="">the superclass is</a>.)</div><div class=""><br class=""></div><div class="">Anyone know what’s going on here?</div></div></div></blockquote><br class=""></div><div>I didn't see any obvious reason it would, but since this patch messes with IRGen it would be good to double-check that we still emit ObjC class metadata with the correct format. This seems like the kind of problem that could arise if we ended up generating the method tables incorrectly for some reason.</div><div><br class=""></div><div>-Joe</div><br class=""></body></html>