<html>
<head>
<base href="http://llvm.org/bugs/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW --- - Parser::ParseParameterDeclarationClause leaks memory"
href="http://llvm.org/bugs/show_bug.cgi?id=19689">19689</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>Parser::ParseParameterDeclarationClause leaks memory
</td>
</tr>
<tr>
<th>Product</th>
<td>clang
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>Frontend
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedclangbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>nicolasweber@gmx.de
</td>
</tr>
<tr>
<th>CC</th>
<td>llvmbugs@cs.uiuc.edu
</td>
</tr>
<tr>
<th>Classification</th>
<td>Unclassified
</td>
</tr></table>
<p>
<div>
<pre>LSan reports:
Script:
--
/usr/local/google/ssd/asan-boot/stage2/./bin/clang -cc1 -internal-isystem
/usr/local/google/ssd/asan-boot/stage2/bin/../lib/clang/3.5.0/include
-std=c++11 -verify
/home/kcc/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/dcl.fct.def.default/p1.cpp
--
Exit Code: 23
Command Output (stderr):
--
=================================================================
==26235==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 120 byte(s) in 1 object(s) allocated from:
#0 0x7c0140 in operator new(unsigned long)
/home/kcc/llvm/projects/compiler-rt/lib/asan/asan_new_delete.cc:62
#1 0x44e56e9 in
clang::Parser::ParseParameterDeclarationClause(clang::Declarator&,
clang::ParsedAttributes&,
llvm::SmallVectorImpl<clang::DeclaratorChunk::ParamInfo>&,
clang::SourceLocation&) /home/kcc/llvm/tools/clang/lib/Parse/ParseDecl.cpp:5381
#2 0x44dd719 in clang::Parser::ParseFunctionDeclarator(clang::Declarator&,
clang::ParsedAttributes&, clang::BalancedDelimiterTracker&, bool, bool)
/home/kcc/llvm/tools/clang/lib/Parse/ParseDecl.cpp:5080
#3 0x44d9025 in clang::Parser::ParseDirectDeclarator(clang::Declarator&)
/home/kcc/llvm/tools/clang/lib/Parse/ParseDecl.cpp:4890
#4 0x44d2ecd in clang::Parser::ParseDeclaratorInternal(clang::Declarator&,
void (clang::Parser::*)(clang::Declarator&))
/home/kcc/llvm/tools/clang/lib/Parse/ParseDecl.cpp:4554
#5 0x4514fb0 in
clang::Parser::ParseCXXMemberDeclaratorBeforeInitializer(clang::Declarator&,
clang::VirtSpecifiers&, clang::ActionResult<clang::Expr*, true>&,
clang::Parser::LateParsedAttrList&)
/home/kcc/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp:1922
#6 0x4518bbc in
clang::Parser::ParseCXXClassMemberDeclaration(clang::AccessSpecifier,
clang::AttributeList*, clang::Parser::ParsedTemplateInfo const&,
clang::ParsingDeclRAIIObject*)
/home/kcc/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp:2163
#7 0x450d6a9 in
clang::Parser::ParseCXXMemberSpecification(clang::SourceLocation,
clang::SourceLocation, clang::Parser::ParsedAttributesWithRange&, unsigned int,
clang::Decl*) /home/kcc/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp:2693
#8 0x4508044 in clang::Parser::ParseClassSpecifier(clang::tok::TokenKind,
clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo
const&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext,
clang::Parser::ParsedAttributesWithRange&)
/home/kcc/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp:1623
#9 0x44a4c52 in clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&,
clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier,
clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*)
/home/kcc/llvm/tools/clang/lib/Parse/ParseDecl.cpp:3068
#10 0x446c13f in
clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec&, clang::AccessSpecifier)
/home/kcc/llvm/tools/clang/lib/Parse/Parser.cpp:829
#11 0x446b7c5 in
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier)
/home/kcc/llvm/tools/clang/lib/Parse/Parser.cpp:902
#12 0x4468009 in
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) /home/kcc/llvm/tools/clang/lib/Parse/Parser.cpp:760
#13 0x4465a48 in
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&)
/home/kcc/llvm/tools/clang/lib/Parse/Parser.cpp:557
#14 0x44586b0 in clang::ParseAST(clang::Sema&, bool, bool)
/home/kcc/llvm/tools/clang/lib/Parse/ParseAST.cpp:135
#15 0x295d3fa in clang::FrontendAction::Execute()
/home/kcc/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:402
#16 0x28dfea7 in
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
/home/kcc/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp:720
#17 0x2ab531e in clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
/home/kcc/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:239
#18 0x7e749a in cc1_main(char const**, char const**, char const*, void*)
/home/kcc/llvm/tools/clang/tools/driver/cc1_main.cpp:112
#19 0x7e2afd in main /home/kcc/llvm/tools/clang/tools/driver/driver.cpp:318
#20 0x7f34c157a76c in __libc_start_main
/build/buildd/eglibc-2.15/csu/libc-start.c:226
The leak:
if (Tok.is(tok::equal)) {
SourceLocation EqualLoc = Tok.getLocation();
// Parse the default argument
if (D.getContext() == Declarator::MemberContext) {
// If we're inside a class definition, cache the tokens
// corresponding to the default argument. We'll actually parse
// them when we see the end of the class definition.
// FIXME: Can we use a smart pointer for Toks?
DefArgToks = new CachedTokens;</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>