Open
Description
Previous ID | SR-15716 |
Radar | None |
Original Reporter | sdpopov (JIRA User) |
Type | Bug |
Attachment: Download
Additional Detail from JIRA
Votes | 0 |
Component/s | Foundation |
Labels | Bug |
Assignee | None |
Priority | Medium |
md5: 730a7617c66ebfab8689f07d0bedd1bb
Issue Description:
NSLocalizedString() crashes when the key is in .stringsdict file. Otherwise NSLocalizedString() works.
Code to reproduce is attached.
main.swift:
import Foundation
print(NSLocalizedString("works", bundle: .module, comment: ""))
print("-")
let format = NSLocalizedString("n.friends", bundle: .module, comment: "")
print("-")
print(String.localizedStringWithFormat(format, 0))
print(String.localizedStringWithFormat(format, 1))
print(String.localizedStringWithFormat(format, 3))
Output (Swift 5.5.2, Ubuntu 18):
It works!
-
Segmentation fault (core dumped)
Expected output (Xcode 13.2, macOS 12.1):
It works!
-
-
no friends
1 friend
3 friends
Program ended with exit code: 0
LLDB backtrace:
(lldb) thread backtrace
* thread #​1, name = 'Localized', stop reason = signal SIGSEGV: invalid address (fault address: 0x18)
* frame #​0: 0x00007ffff746b064 libswiftCore.so`swift::metadataimpl::ValueWitnesses<swift::metadataimpl::OpaqueExistentialBox<0u> >::initializeWithCopy(swift::OpaqueValue*, swift::OpaqueValue*, swift::TargetMetadata<swift::InProcess> const*) + 4
frame #​1: 0x00007ffff786e07b libFoundation.so`outlined init with copy of Any + 27
frame #​2: 0x00007ffff7870036 libFoundation.so`function signature specialization <Arg[1] = Dead> of static Foundation.__SwiftValue.store(Any) -> Foundation.NSObject + 38
frame #​3: 0x00007ffff7978e68 libFoundation.so`Foundation._NSCFDictionary.object(forKey: Any) -> Swift.Optional<Any> + 40
frame #​4: 0x00007ffff7a1a4d3 libFoundation.so`Foundation.NSString.getCharacters(_: Swift.UnsafeMutablePointer<Swift.UInt16>, range: Foundation._NSRange) -> () + 99
frame #​5: 0x00007ffff7ab3e06 libFoundation.so`static Swift.String._conditionallyBridgeFromObjectiveC(_: Foundation.NSString, result: inout Swift.Optional<Swift.String>) -> Swift.Bool + 390
frame #​6: 0x00007ffff7ab3c58 libFoundation.so`static Swift.String._unconditionallyBridgeFromObjectiveC(Swift.Optional<Foundation.NSString>) -> Swift.String + 24
frame #​7: 0x00007ffff7a190d4 libFoundation.so`__C.CFStringRef._swiftObject.getter : Swift.String + 20
frame #​8: 0x00007ffff7872642 libFoundation.so`Foundation.Bundle.localizedString(forKey: Swift.String, value: Swift.Optional<Swift.String>, table: Swift.Optional<Swift.String>) -> Swift.String + 178
frame #​9: 0x00007ffff7a18710 libFoundation.so`Foundation.NSLocalizedString(_: Swift.String, tableName: Swift.Optional<Swift.String>, bundle: Foundation.Bundle, value: Swift.String, comment: Swift.String) -> Swift.String + 32
frame #​10: 0x0000555555555a7f Localized`main at main.swift:7:14
frame #​11: 0x00007ffff5e88bf7 libc.so.6`__libc_start_main(main=(Localized`main at main.swift), argc=1, argv=0x00007fffffffde08, init=<unavailable>, fini=<unavailable>, rtld_fini=<unavailable>, stack_end=0x00007fffffffddf8) at libc-start.c:310
frame #​12: 0x000055555555548a Localized`_start + 42