[LLVMbugs] [Bug 11208] New: ARC is too controlling and results in non-existence bugs.

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Sat Oct 22 07:31:11 PDT 2011


           Summary: ARC is too controlling and results in non-existence
           Product: clang
           Version: unspecified
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Static Analyzer
        AssignedTo: kremenek at apple.com
        ReportedBy: multiHYP at gmail.com
                CC: llvmbugs at cs.uiuc.edu

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:


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


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.


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.


Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list