-
Notifications
You must be signed in to change notification settings - Fork 15.6k
Description
| 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.