Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SR-14950] Memory leak in PropertyListSerialization #3366

Open
drexin opened this issue Jul 21, 2021 · 1 comment
Open

[SR-14950] Memory leak in PropertyListSerialization #3366

drexin opened this issue Jul 21, 2021 · 1 comment

Comments

@drexin
Copy link
Member

drexin commented Jul 21, 2021

Previous ID SR-14950
Radar rdar://problem/80919378
Original Reporter @drexin
Type Bug
Additional Detail from JIRA
Votes 0
Component/s Foundation
Labels Bug
Assignee None
Priority Medium

md5: cf6496f388ad9b4eba6f67b397edb91f

Issue Description:

When decoding a property lists, memory is leaked from `_CFRuntimeCreateInstance`

Reproducer:

import Foundation

import Glibc

while true {
  let dict = ["foo": 1, "bar": 2]

  do {
    let encoder = PropertyListEncoder()
    encoder.outputFormat = .binary
    let plist = try encoder.encode(dict)

    let decoder = PropertyListDecoder()

    let deserialized = try decoder.decode(
                    [String: Int].self,
                    from: plist)
    print(deserialized)
  } catch {
    fatalError()
  }

  sleep(1)
}

Full backtrace from valgrind:

==753== 1,240 (192 direct, 1,048 indirect) bytes in 3 blocks are definitely lost in loss record 86 of 87
==753==    at 0x483E0F0: memalign (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==753==    by 0x483E212: posix_memalign (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==753==    by 0x4C5BBB4: swift_slowAlloc (in /usr/lib/swift/linux/libswiftCore.so)
==753==    by 0x4C5BC01: swift_allocObject (in /usr/lib/swift/linux/libswiftCore.so)
==753==    by 0x5443DB8: _CFRuntimeCreateInstance (in /usr/lib/swift/linux/libFoundation.so)
==753==    by 0x545B7D4: CFBasicHashCreate (in /usr/lib/swift/linux/libFoundation.so)
==753==    by 0x5460B0A: __CFDictionaryCreateTransfer (in /usr/lib/swift/linux/libFoundation.so)
==753==    by 0x549292C: __CFBinaryPlistCreateObjectFiltered (in /usr/lib/swift/linux/libFoundation.so)
==753==    by 0x549380B: __CFTryParseBinaryPlist (in /usr/lib/swift/linux/libFoundation.so)
==753==    by 0x549572F: _CFPropertyListCreateWithData (in /usr/lib/swift/linux/libFoundation.so)
==753==    by 0x549610F: CFPropertyListCreateWithData (in /usr/lib/swift/linux/libFoundation.so)
==753==    by 0x5408CCD: $s10Foundation25PropertyListSerializationC08propertyC04from7options6formatypAA4DataV_AC17MutabilityOptionsVSpyAC0bC6FormatOGSgtKFZ (in /usr/lib/swift/linux/libFoundation.so)
@drexin
Copy link
Member Author

drexin commented Jul 21, 2021

@swift-ci create

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
@shahmishal shahmishal transferred this issue from apple/swift May 5, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant