Skip to content

ARC is too controlling and results in non-existence bugs. #11580

@llvmbot

Description

@llvmbot
Bugzilla Link 11208
Resolution INVALID
Resolved on Nov 07, 2018 00:22
Version unspecified
OS MacOS X
Reporter LLVM Bugzilla Contributor

Extended Description

Summary:
I had a command line tools mae (Mono Alphabetic Encryption) that heavily used NSCountedSets. Since I moved to Xcode 4.2 and had the code inside @​autorelease {...} blocks, there was a mysterious EXC_BAD_ACCESS or segmentation fault appearing out of nowhere.
Long story short, it related to the line 161 available here:

https://github.com/multiHYP/mae/blob/fc19e2ea7c9c44b5f3728bb4f9a268379ca52e7b/mae/main.m#L161

Now, the problem arises when that while-loop only sometimes continues executing for items in NSCountedSet, whose count was 1. Naturally after 1 iteration the while-loop should quit, but if ARC is turned on, it doesn't. Again, for items in an NSCountedSet whose count is 1, only sometimes that while-loop keeps iterating.

Thanks.

Steps to Reproduce:
Go to that Github project and download a zipball of it. See the commit I linked to above, because my project's latest release keeps changing. Important is to make sure that your main.m is the same as the version I linked above. Enable ARC as it is on by default, LLDB for your debugger and add the following two arguments under your scheme: -rn and -utf8
Get that pg4300.txt file from project gutenberg, or some rather large text file. I attach the file below. Make sure your path (input variable) in main.m reflects the correct path respectively.
Run it.

Expected Results:
Every character in the text (-utf8 format) with its number of occurences should appear in a reverse numerical/occurences (-rn) table. Notice, that some items at the end/bottom of the table have the count 1, but suddenly the running hangs and points you to the while-loop's line. There is only other characters with occurrences of 1 left to print out, but despite having printed out some of them, the others are failing.

Actual Results:
It should have in reality printed out a full table statistics of all those characters and occurrences appearing in the text file, but it didn't.

Regression:

Notes:
Now, if you go to project settings and disable ARC, it works just fine and you see the Actual Results.
I talked about it in #macdev irc channel and it seems that ARC is too controlling in its nature and that results in such failure.

Thanks.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions