[LLVMbugs] [Bug 10237] New: Segfault when dereferencing a forward-declared struct

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Jul 1 00:44:32 PDT 2011


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

           Summary: Segfault when dereferencing a forward-declared struct
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: max at duempel.org
                CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com


The following snippet makes clang++ svn r134234 crash:

struct X crash() { if (X[i]){} }

Error message:

crash.cpp:1:10: error: incomplete result type 'struct X' in function definition
struct X crash() {
         ^
crash.cpp:1:8: note: forward declaration of 'X'
struct X crash() {
       ^
crash.cpp:2:10: error: expected unqualified-id
    if (X[i]) {}
         ^
crash.cpp:2:11: error: use of undeclared identifier 'i'
    if (X[i]) {}
          ^
0  clang           0x00000000018f8d7f
1  clang           0x00000000018f91e9
2  libpthread.so.0 0x00007f6d0f8a0020
3  clang           0x00000000009ab113
clang::Sema::ActOnCXXConditionDeclaration(clang::Scope*, clang::Declarator&) +
19
4  clang           0x00000000008d8182
clang::Parser::ParseCXXCondition(clang::ActionResult<clang::Expr*, true>&,
clang::Decl*&, clang::SourceLocation, bool) + 1058
5  clang           0x0000000000891946
clang::Parser::ParseParenExprOrCondition(clang::ActionResult<clang::Expr*,
true>&, clang::Decl*&, clang::SourceLocation, bool) + 198
6  clang           0x000000000089ac5f
clang::Parser::ParseIfStatement(clang::ParsedAttributes&) + 447
7  clang           0x000000000089722d
clang::Parser::ParseStatementOrDeclaration(clang::ASTOwningVector<clang::Stmt*,
32u>&, bool) + 2413
8  clang           0x0000000000894653
clang::Parser::ParseCompoundStatementBody(bool) + 1587
9  clang           0x0000000000894daa
clang::Parser::ParseFunctionStatementBody(clang::Decl*,
clang::Parser::ParseScope&) + 138
10 clang           0x00000000008ad3e4
clang::Parser::ParseFunctionDefinition(clang::Parser::ParsingDeclarator&,
clang::Parser::ParsedTemplateInfo const&) + 1044
11 clang           0x00000000008b8dea
clang::Parser::ParseDeclGroup(clang::Parser::ParsingDeclSpec&, unsigned int,
bool, clang::SourceLocation*, clang::Parser::ForRangeInit*) + 746
12 clang           0x00000000008a8831
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsingDeclSpec&,
clang::AccessSpecifier) + 145
13 clang           0x00000000008a8db3
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&,
clang::AccessSpecifier) + 531
14 clang           0x00000000008ab330
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::Parser::ParsingDeclSpec*) + 2752
15 clang           0x00000000008ab864
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 164
16 clang           0x000000000088542d clang::ParseAST(clang::Sema&, bool) + 253
17 clang           0x000000000075e1f3 clang::CodeGenAction::ExecuteAction() +
51
18 clang           0x0000000000673623
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 307
19 clang           0x0000000000653269
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1001
20 clang           0x0000000000648a12 cc1_main(char const**, char const**, char
const*, void*) + 706
21 clang           0x0000000000651bf6 main + 678
22 libc.so.6       0x00007f6d0eb85ead __libc_start_main + 253
23 clang           0x00000000006485e9
Stack dump:
0.      Program arguments: /usr/local/stow/llvm/bin/clang -cc1 -triple
x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free
-disable-llvm-verifier -main-file-name crash.cpp -mrelocation-model static
-mdisable-fp-elim -masm-verbose -mconstructor-aliases -munwind-tables
-target-cpu x86-64 -target-linker-version 2.21.52.20110606
-momit-leaf-frame-pointer -coverage-file crash.o -resource-dir
/usr/local/stow/llvm/bin/../lib/clang/3.0 -fdeprecated-macro -ferror-limit 19
-fmessage-length 266 -fgnu-runtime -fcxx-exceptions -fexceptions
-fdiagnostics-show-option -fcolor-diagnostics -o crash.o -x c++ crash.cpp 
1.      crash.cpp:2:13: current parser token ')'
2.      crash.cpp:1:18: parsing function body 'crash'
3.      crash.cpp:1:18: in compound statement ('{}')
clang: error: unable to execute command: Segmentation fault
clang: error: clang frontend command failed due to signal 2 (use -v to see
invocation)

-- 
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