[LLVMbugs] [Bug 20026] New: Clang produces corrupt pch leading to crash in clang::ASTReader::finishPendingActions()

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Jun 13 06:44:32 PDT 2014


http://llvm.org/bugs/show_bug.cgi?id=20026

            Bug ID: 20026
           Summary: Clang produces corrupt pch leading to crash in
                    clang::ASTReader::finishPendingActions()
           Product: clang
           Version: trunk
          Hardware: Macintosh
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: -New Bugs
          Assignee: unassignedclangbugs at nondot.org
          Reporter: tobias.hahn at ableton.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Created attachment 12654
  --> http://llvm.org/bugs/attachment.cgi?id=12654&action=edit
A zip archive containing a header, a cpp-file and a script to reproduce the
bug.

Precompiling the attached code leads to a corrupt pch file that makes clang
crash when using it in a later compilation unit.

Steps to reproduce:
1. Adjust the CC and CFLAGS variables in crashIt.sh to point to the version of
clang under test.
2. Run crashIt.sh.

Expected results:
clang compiles both files without error.

Actual results:
clang crashes when compiling EnvelopeTarget.cpp.

Reproducible:
Running the script produces a crash about 9/10 times, but occasionally,
compilation succeeds.

Notes:
The attached code is a stripped down version of the module of our codebase that
triggers this crash. While stripping out code, intermediate versions
occasionally would trigger malloc assertions in clang like the following:

clang(66542,0x7fff7b37a310) malloc: *** error for object 0x104832208: incorrect
checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

At other times, clang complained that exception specifications on some
destructor had changed when both declaration and definition have no exception
specification:

error: exception specification in declaration does not match previous
declaration
inline AEnvelopeTarget::~AEnvelopeTarget() {}

note: previous declaration is here
  virtual ~AEnvelopeTarget() = 0;
                        ^
I tried to strip down the code even further, but the current version appears to
be a minimal example reproducing the issue. Also note that all bogus include
paths on the command line are necessary to reproduce the issue.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140613/045ddcaa/attachment.html>


More information about the llvm-bugs mailing list