Skip to content

[SR-15716] segfault: NSLocalizedString + .stringsdict #3183

Open
@swift-ci

Description

@swift-ci
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 #&#8203;0: 0x00007ffff746b064 libswiftCore.so`swift::metadataimpl::ValueWitnesses<swift::metadataimpl::OpaqueExistentialBox<0u> >::initializeWithCopy(swift::OpaqueValue*, swift::OpaqueValue*, swift::TargetMetadata<swift::InProcess> const*) + 4
    frame #&#8203;1: 0x00007ffff786e07b libFoundation.so`outlined init with copy of Any + 27
    frame #&#8203;2: 0x00007ffff7870036 libFoundation.so`function signature specialization <Arg[1] = Dead> of static Foundation.__SwiftValue.store(Any) -> Foundation.NSObject + 38
    frame #&#8203;3: 0x00007ffff7978e68 libFoundation.so`Foundation._NSCFDictionary.object(forKey: Any) -> Swift.Optional<Any> + 40
    frame #&#8203;4: 0x00007ffff7a1a4d3 libFoundation.so`Foundation.NSString.getCharacters(_: Swift.UnsafeMutablePointer<Swift.UInt16>, range: Foundation._NSRange) -> () + 99
    frame #&#8203;5: 0x00007ffff7ab3e06 libFoundation.so`static Swift.String._conditionallyBridgeFromObjectiveC(_: Foundation.NSString, result: inout Swift.Optional<Swift.String>) -> Swift.Bool + 390
    frame #&#8203;6: 0x00007ffff7ab3c58 libFoundation.so`static Swift.String._unconditionallyBridgeFromObjectiveC(Swift.Optional<Foundation.NSString>) -> Swift.String + 24
    frame #&#8203;7: 0x00007ffff7a190d4 libFoundation.so`__C.CFStringRef._swiftObject.getter : Swift.String + 20
    frame #&#8203;8: 0x00007ffff7872642 libFoundation.so`Foundation.Bundle.localizedString(forKey: Swift.String, value: Swift.Optional<Swift.String>, table: Swift.Optional<Swift.String>) -> Swift.String + 178
    frame #&#8203;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 #&#8203;10: 0x0000555555555a7f Localized`main at main.swift:7:14
    frame #&#8203;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 #&#8203;12: 0x000055555555548a Localized`_start + 42

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions