[LLVMbugs] [Bug 13635] New: Block (NSError **)error return in ARC crashes due to zombie object

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Aug 17 22:00:03 PDT 2012


             Bug #: 13635
           Summary: Block (NSError **)error return in ARC crashes due to
                    zombie object
           Product: clang
           Version: unspecified
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: jim.correia at pobox.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Created attachment 9069
  --> http://llvm.org/bugs/attachment.cgi?id=9069
Sample code


      -processArray:error: would have been problematic with manual
      retain/release code, since localError is a zombie by the time it
      is assigned to *error. This method actually works fine when ARC is
      enabled, which is great.

      -buggyArcProcessArray:error: fails under ARC though. The value
      assigned to *error is autoreleased, and deallocated, before
      returning to the caller.

      Since we tend to think less about references when building with
      ARC, it would be great if this could be made to just work.

      However, if it cannot, it would be nice if the compiler could
      issue a warning that assigning to *error inside the block is a bad
      idea, and suggest using the __block local to keep a reference to
      the object alive.

   Compiler version:

      % xcrun clang -v
      Apple clang version 4.0 (tags/Apple/clang-421.10.60) (based on LLVM
      Target: x86_64-apple-darwin12.0.0
      Thread model: posix

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