[swift-corelibs-dev] Encountering "Constant strings cannot be deallocated" in Linux foundation

Tony Parker anthony.parker at apple.com
Wed Nov 29 16:59:35 CST 2017


I see a couple of places that are suspicious there:

Description:

https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/URL.subproj/CFURLComponents.c#L66 <https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/URL.subproj/CFURLComponents.c#L66>

And the nameString / valueString constants in the copy query items function:

https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/URL.subproj/CFURLComponents.c#L1057 <https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/URL.subproj/CFURLComponents.c#L1057>
https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/URL.subproj/CFURLComponents.c#L1079 <https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/URL.subproj/CFURLComponents.c#L1079>
https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/URL.subproj/CFURLComponents.c#L1104 <https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/URL.subproj/CFURLComponents.c#L1104>
https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/URL.subproj/CFURLComponents.c#L1134 <https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/URL.subproj/CFURLComponents.c#L1134>
https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/URL.subproj/CFURLComponents.c#L1158 <https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/URL.subproj/CFURLComponents.c#L1158>

Do you have the ability to re-build swift-corelibs-foundation and run a test? I suspect if you replace those with CFRetain(CFSTR(…)) then it will fix your crash.

- Tony

> On Nov 29, 2017, at 2:06 PM, Brandon Williams <mbw234 at gmail.com> wrote:
> 
> Thanks for the info!
> 
> FWIW, most of the places I have encountered this so far have made use of `URLComponents`, and have even been able to eliminate the crash by getting rid of that code in a few places. The other JIRA bug on this topic also mentions URLComponents in their repro case. Seems to be the culprit.
> 
> Also worth noting that in the above cases dealing with URLComponents the crash only happens in DEBUG compilations, not RELEASE.
> 
> However, I do have another one of these crashes that _does_ happen on RELEASE builds that I haven’t yet been able to reduce.
> 
> 
> On Wed, Nov 29, 2017 at 4:43 PM Tony Parker <anthony.parker at apple.com <mailto:anthony.parker at apple.com>> wrote:
> Hi Brandon,
> 
> This is probably a bug in the CoreFoundation C sources part of swift-corelibs-foundation. Unlike Darwin platforms, we can’t make the CFSTR(“”) macro produce a CFStringRef that cannot be overreleased. Probably there is a constant string returned from CF function, then the Swift runtime assumes it can release it, and bam we wind up with an overrelease.
> 
> We’ll have to track down which function is getting called, which probably just requires stepping through that test case with a debugger…
> 
> - Tony
>> On Nov 29, 2017, at 1:34 PM, Brandon Williams via swift-corelibs-dev <swift-corelibs-dev at swift.org <mailto:swift-corelibs-dev at swift.org>> wrote:
>> 
> 
>> Hello all!
>> 
>> We’ve been encountering this runtime error quite a bit recently, and we have no idea why. We’ve filed a bug and there’s one other on JIRA related to this, but both without any comments:
>> 
>> https://bugs.swift.org/browse/SR-6422 <https://bugs.swift.org/browse/SR-6422>
>> https://bugs.swift.org/browse/SR-6398 <https://bugs.swift.org/browse/SR-6398>
>> 
>> We’re curious if others are aware of this and or has more info? Is it a red herring for some other problem?
>> 
>> Any info would be helpful!
> 
>> _______________________________________________
>> swift-corelibs-dev mailing list
>> swift-corelibs-dev at swift.org <mailto:swift-corelibs-dev at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-corelibs-dev <https://lists.swift.org/mailman/listinfo/swift-corelibs-dev>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-corelibs-dev/attachments/20171129/e8c72f0b/attachment.html>


More information about the swift-corelibs-dev mailing list