thurstond wrote:

When I ran the buildbot script, I did reproduce the scary `libc++abi: Pure 
virtual function called!` message:
```
******************** TEST 'Clang :: 
SemaOpenACC/loop-construct-reduction-clause.cpp' FAILED ********************
Exit Code: 134

Command Output (stderr):
--
/home/thurston/buildbot_repro/llvm_build_hwasan/bin/clang -cc1 
-internal-isystem 
/home/thurston/buildbot_repro/llvm_build_hwasan/lib/clang/22/include 
-nostdsysteminc 
/home/thurston/llvm-project/clang/test/SemaOpenACC/loop-construct-reduction-clause.cpp
 -fopenacc -verify # RUN: at line 1
+ /home/thurston/buildbot_repro/llvm_build_hwasan/bin/clang -cc1 
-internal-isystem 
/home/thurston/buildbot_repro/llvm_build_hwasan/lib/clang/22/include 
-nostdsysteminc 
/home/thurston/llvm-project/clang/test/SemaOpenACC/loop-construct-reduction-clause.cpp
 -fopenacc -verify
libc++abi: Pure virtual function called!
/home/thurston/buildbot_repro/llvm_build_hwasan/tools/clang/test/SemaOpenACC/Output/loop-construct-reduction-clause.cpp.script:
 line 1: 1815580 Aborted                 
/home/thurston/buildbot_repro/llvm_build_hwasan/bin/clang -cc1 
-internal-isystem 
/home/thurston/buildbot_repro/llvm_build_hwasan/lib/clang/22/include 
-nostdsysteminc 
/home/thurston/llvm-project/clang/test/SemaOpenACC/loop-construct-reduction-clause.cpp
 -fopenacc -verify

--
```
but when I tried running the test command, all I get are memory leaks (which 
are still worth fixing, but doesn't explain the "pure virtual function" error):

```
Direct leak of 120 byte(s) in 1 object(s) allocated from:
    #0 0xc7425bb0c970 in malloc 
/home/thurston/llvm-project/compiler-rt/lib/hwasan/hwasan_allocation_functions.cpp:147:3
    #1 0xc74262a23140 in safe_malloc 
/home/thurston/llvm-project/llvm/include/llvm/Support/MemAlloc.h:26:18
    #2 0xc74262a23140 in llvm::SmallVectorBase<unsigned int>::grow_pod(void*, 
unsigned long, unsigned long) 
/home/thurston/llvm-project/llvm/lib/Support/SmallVector.cpp:151:15
    #3 0xc742681d4be0 in grow_pod 
/home/thurston/llvm-project/llvm/include/llvm/ADT/SmallVector.h:139:11
    #4 0xc742681d4be0 in grow 
/home/thurston/llvm-project/llvm/include/llvm/ADT/SmallVector.h:525:41
    #5 0xc742681d4be0 in 
llvm::SmallVectorImpl<clang::OpenACCReductionRecipe::CombinerRecipe>::operator=(llvm::SmallVectorImpl<clang::OpenACCReductionRecipe::CombinerRecipe>
 const&) /home/thurston/llvm-project/llvm/include/llvm/ADT/SmallVector.h:1036:11
    #6 0xc7426a5ed960 in SmallVector 
/home/thurston/llvm-project/llvm/include/llvm/ADT/SmallVector.h:1238:27
    #7 0xc7426a5ed960 in OpenACCReductionRecipe 
/home/thurston/llvm-project/clang/include/clang/AST/OpenACCClause.h:1281:8
    #8 0xc7426a5ed960 in __uninitialized_copy<clang::OpenACCReductionRecipe, 
const clang::OpenACCReductionRecipe *, const clang::OpenACCReductionRecipe *, 
clang::OpenACCReductionRecipe *, std::__1::__always_false> 
/home/thurston/buildbot_repro/libcxx_install_hwasan/include/c++/v1/__memory/uninitialized_algorithms.h:66:56
    #9 0xc7426a5ed960 in uninitialized_copy<const clang::OpenACCReductionRecipe 
*, clang::OpenACCReductionRecipe *> 
/home/thurston/buildbot_repro/libcxx_install_hwasan/include/c++/v1/__memory/uninitialized_algorithms.h:76:19
    #10 0xc7426a5ed960 in 
uninitialized_copy<llvm::ArrayRef<clang::OpenACCReductionRecipe> &, 
clang::OpenACCReductionRecipe *> 
/home/thurston/llvm-project/llvm/include/llvm/ADT/STLExtras.h:2056:10
    #11 0xc7426a5ed960 in 
clang::OpenACCReductionClause::OpenACCReductionClause(clang::SourceLocation, 
clang::SourceLocation, clang::OpenACCReductionOperator, 
llvm::ArrayRef<clang::Expr*>, llvm::ArrayRef<clang::OpenACCReductionRecipe>, 
clang::SourceLocation) 
/home/thurston/llvm-project/clang/include/clang/AST/OpenACCClause.h:1328:5
    #12 0xc7426a5ed3f0 in 
clang::OpenACCReductionClause::Create(clang::ASTContext const&, 
clang::SourceLocation, clang::SourceLocation, clang::OpenACCReductionOperator, 
llvm::ArrayRef<clang::Expr*>, llvm::ArrayRef<clang::OpenACCReductionRecipe>, 
clang::SourceLocation) 
/home/thurston/llvm-project/clang/lib/AST/OpenACCClause.cpp:514:20
    #13 0xc742689f1254 in 
clang::SemaOpenACC::CheckReductionClause(llvm::ArrayRef<clang::OpenACCClause 
const*>, clang::OpenACCDirectiveKind, clang::SourceLocation, 
clang::SourceLocation, clang::OpenACCReductionOperator, 
llvm::ArrayRef<clang::Expr*>, llvm::ArrayRef<clang::OpenACCReductionRecipe>, 
clang::SourceLocation) 
/home/thurston/llvm-project/clang/lib/Sema/SemaOpenACCClause.cpp:2228:15
    #14 0xc74269143240 in VisitReductionClause 
/home/thurston/llvm-project/clang/lib/Sema/TreeTransform.h:12394:40
    #15 0xc74269143240 in Visit 
/home/thurston/llvm-project/clang/include/clang/Basic/OpenACCClauses.def:65:1
    #16 0xc74269143240 in TransformOpenACCClause 
/home/thurston/llvm-project/clang/lib/Sema/TreeTransform.h:12491:13
    #17 0xc74269143240 in clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformOpenACCClauseList(clang::OpenACCDirectiveKind,
 llvm::ArrayRef<clang::OpenACCClause const*>) 
/home/thurston/llvm-project/clang/lib/Sema/TreeTransform.h:12502:57
    #18 0xc742691276d8 in clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformOpenACCLoopConstruct(clang::OpenACCLoopConstruct*)
 /home/thurston/llvm-project/clang/lib/Sema/TreeTransform.h:12542:20
    #19 0xc742690f1224 in clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, 
bool) /home/thurston/llvm-project/clang/lib/Sema/TreeTransform.h:8028:38
    #20 0xc74269128a88 in clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformOpenACCComputeConstruct(clang::OpenACCComputeConstruct*)
 /home/thurston/llvm-project/clang/lib/Sema/TreeTransform.h:12526:38
    #21 0xc742690f1224 in clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformCompoundStmt(clang::CompoundStmt*, 
bool) /home/thurston/llvm-project/clang/lib/Sema/TreeTransform.h:8028:38
    #22 0xc742690bb578 in clang::Sema::SubstStmt(clang::Stmt*, 
clang::MultiLevelTemplateArgumentList const&) 
/home/thurston/llvm-project/clang/lib/Sema/SemaTemplateInstantiate.cpp:4418:23
    #23 0xc7426919cef4 in 
clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, 
clang::FunctionDecl*, bool, bool, bool) 
/home/thurston/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5892:14
    #24 0xc742691a6180 in clang::Sema::PerformPendingInstantiations(bool, bool) 
/home/thurston/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:7150:9
    #25 0xc74267e60b80 in 
clang::Sema::ActOnEndOfTranslationUnitFragment(clang::TUFragmentKind) 
/home/thurston/llvm-project/clang/lib/Sema/Sema.cpp:1221:5
    #26 0xc74267e618d8 in clang::Sema::ActOnEndOfTranslationUnit() 
/home/thurston/llvm-project/clang/lib/Sema/Sema.cpp:1245:5
    #27 0xc74267af9644 in 
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, 
clang::Sema::ModuleImportState&) 
/home/thurston/llvm-project/clang/lib/Parse/Parser.cpp:712:13
    #28 0xc74267ad9ef8 in clang::ParseAST(clang::Sema&, bool, bool) 
/home/thurston/llvm-project/clang/lib/Parse/ParseAST.cpp:170:20
    #29 0xc742647cbef0 in clang::FrontendAction::Execute() 
/home/thurston/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1311:3
    #30 0xc74264687a18 in 
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) 
/home/thurston/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1008:33

Direct leak of 120 byte(s) in 1 object(s) allocated from:
    #0 0xc7425bb0c970 in malloc 
/home/thurston/llvm-project/compiler-rt/lib/hwasan/hwasan_allocation_functions.cpp:147:3
    #1 0xc74262a23140 in safe_malloc 
/home/thurston/llvm-project/llvm/include/llvm/Support/MemAlloc.h:26:18
    #2 0xc74262a23140 in llvm::SmallVectorBase<unsigned int>::grow_pod(void*, 
unsigned long, unsigned long) 
/home/thurston/llvm-project/llvm/lib/Support/SmallVector.cpp:151:15
    #3 0xc742681d4be0 in grow_pod 
/home/thurston/llvm-project/llvm/include/llvm/ADT/SmallVector.h:139:11
    #4 0xc742681d4be0 in grow 
/home/thurston/llvm-project/llvm/include/llvm/ADT/SmallVector.h:525:41
    #5 0xc742681d4be0 in 
llvm::SmallVectorImpl<clang::OpenACCReductionRecipe::CombinerRecipe>::operator=(llvm::SmallVectorImpl<clang::OpenACCReductionRecipe::CombinerRecipe>
 const&) /home/thurston/llvm-project/llvm/include/llvm/ADT/SmallVector.h:1036:11
    #6 0xc7426a5ed960 in SmallVector 
/home/thurston/llvm-project/llvm/include/llvm/ADT/SmallVector.h:1238:27
    #7 0xc7426a5ed960 in OpenACCReductionRecipe 
/home/thurston/llvm-project/clang/include/clang/AST/OpenACCClause.h:1281:8
    #8 0xc7426a5ed960 in __uninitialized_copy<clang::OpenACCReductionRecipe, 
const clang::OpenACCReductionRecipe *, const clang::OpenACCReductionRecipe *, 
clang::OpenACCReductionRecipe *, std::__1::__always_false> 
/home/thurston/buildbot_repro/libcxx_install_hwasan/include/c++/v1/__memory/uninitialized_algorithms.h:66:56
    #9 0xc7426a5ed960 in uninitialized_copy<const clang::OpenACCReductionRecipe 
*, clang::OpenACCReductionRecipe *> 
/home/thurston/buildbot_repro/libcxx_install_hwasan/include/c++/v1/__memory/uninitialized_algorithms.h:76:19
    #10 0xc7426a5ed960 in 
uninitialized_copy<llvm::ArrayRef<clang::OpenACCReductionRecipe> &, 
clang::OpenACCReductionRecipe *> 
/home/thurston/llvm-project/llvm/include/llvm/ADT/STLExtras.h:2056:10
    #11 0xc7426a5ed960 in 
clang::OpenACCReductionClause::OpenACCReductionClause(clang::SourceLocation, 
clang::SourceLocation, clang::OpenACCReductionOperator, 
llvm::ArrayRef<clang::Expr*>, llvm::ArrayRef<clang::OpenACCReductionRecipe>, 
clang::SourceLocation) 
/home/thurston/llvm-project/clang/include/clang/AST/OpenACCClause.h:1328:5
    #12 0xc7426a5ed3f0 in 
clang::OpenACCReductionClause::Create(clang::ASTContext const&, 
clang::SourceLocation, clang::SourceLocation, clang::OpenACCReductionOperator, 
llvm::ArrayRef<clang::Expr*>, llvm::ArrayRef<clang::OpenACCReductionRecipe>, 
clang::SourceLocation) 
/home/thurston/llvm-project/clang/lib/AST/OpenACCClause.cpp:514:20
    #13 0xc742689f1254 in 
clang::SemaOpenACC::CheckReductionClause(llvm::ArrayRef<clang::OpenACCClause 
const*>, clang::OpenACCDirectiveKind, clang::SourceLocation, 
clang::SourceLocation, clang::OpenACCReductionOperator, 
llvm::ArrayRef<clang::Expr*>, llvm::ArrayRef<clang::OpenACCReductionRecipe>, 
clang::SourceLocation) 
/home/thurston/llvm-project/clang/lib/Sema/SemaOpenACCClause.cpp:2228:15
    #14 0xc74268a136ac in (anonymous 
namespace)::SemaOpenACCClauseVisitor::VisitReductionClause(clang::SemaOpenACC::OpenACCParsedClause&)
 /home/thurston/llvm-project/clang/lib/Sema/SemaOpenACCClause.cpp:1789:18
    #15 0xc742689eb0c8 in Visit 
/home/thurston/llvm-project/clang/include/clang/Basic/OpenACCClauses.def:65:1
    #16 0xc742689eb0c8 in 
clang::SemaOpenACC::ActOnClause(llvm::ArrayRef<clang::OpenACCClause const*>, 
clang::SemaOpenACC::OpenACCParsedClause&) 
/home/thurston/llvm-project/clang/lib/Sema/SemaOpenACCClause.cpp:1911:35
    #17 0xc74267d3ac80 in 
clang::Parser::ParseOpenACCClauseParams(llvm::ArrayRef<clang::OpenACCClause 
const*>, clang::OpenACCDirectiveKind, clang::OpenACCClauseKind, 
clang::SourceLocation) 
/home/thurston/llvm-project/clang/lib/Parse/ParseOpenACC.cpp:1266:25
    #18 0xc74267d35244 in 
clang::Parser::ParseOpenACCClauseList(clang::OpenACCDirectiveKind) 
/home/thurston/llvm-project/clang/lib/Parse/ParseOpenACC.cpp:747:39
    #19 0xc74267d436ac in clang::Parser::ParseOpenACCDirective() 
/home/thurston/llvm-project/clang/lib/Parse/ParseOpenACC.cpp:1576:23
    #20 0xc74267d44c58 in clang::Parser::ParseOpenACCDirectiveStmt() 
/home/thurston/llvm-project/clang/lib/Parse/ParseOpenACC.cpp:1671:39
    #21 0xc74267ca3ea8 in 
clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
 24u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, 
clang::ParsedAttributes&, clang::ParsedAttributes&, clang::LabelDecl*) 
/home/thurston/llvm-project/clang/lib/Parse/ParseStmt.cpp:466:12
    #22 0xc74267ca14e0 in 
clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 
24u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, 
clang::LabelDecl*) 
/home/thurston/llvm-project/clang/lib/Parse/ParseStmt.cpp:77:20
    #23 0xc74267cbb3c0 in clang::Parser::ParseCompoundStatementBody(bool) 
/home/thurston/llvm-project/clang/lib/Parse/ParseStmt.cpp:1168:11
    #24 0xc74267cc1788 in operator() 
/home/thurston/llvm-project/clang/lib/Parse/ParseStmt.cpp:968:9
    #25 0xc74267cc1788 in void llvm::function_ref<void 
()>::callback_fn<clang::Parser::ParseCompoundStatement(bool, unsigned 
int)::$_0>(long) 
/home/thurston/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
    #26 0xc7426407ae58 in operator() 
/home/thurston/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
    #27 0xc7426407ae58 in runWithSufficientStackSpace 
/home/thurston/llvm-project/clang/include/clang/Basic/Stack.h:49:7
    #28 0xc7426407ae58 in 
clang::StackExhaustionHandler::runWithSufficientStackSpace(clang::SourceLocation,
 llvm::function_ref<void ()>) 
/home/thurston/llvm-project/clang/lib/Basic/StackExhaustionHandler.cpp:20:3
    #29 0xc74267ca5158 in ParseCompoundStatement 
/home/thurston/llvm-project/clang/lib/Parse/ParseStmt.cpp:967:16
    #30 0xc74267ca5158 in ParseCompoundStatement 
/home/thurston/llvm-project/clang/lib/Parse/ParseStmt.cpp:953:10
    #31 0xc74267ca5158 in 
clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
 24u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, 
clang::ParsedAttributes&, clang::ParsedAttributes&, clang::LabelDecl*) 
/home/thurston/llvm-project/clang/lib/Parse/ParseStmt.cpp:275:12
    #32 0xc74267ca14e0 in 
clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 
24u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, 
clang::LabelDecl*) 
/home/thurston/llvm-project/clang/lib/Parse/ParseStmt.cpp:77:20
    #33 0xc74267ca10ec in clang::Parser::ParseStatement(clang::SourceLocation*, 
clang::Parser::ParsedStmtContext, clang::LabelDecl*) 
/home/thurston/llvm-project/clang/lib/Parse/ParseStmt.cpp:48:11

SUMMARY: HWAddressSanitizer: 240 byte(s) leaked in 2 allocation(s).
```

(The x86 ASan bot [https://lab.llvm.org/buildbot/#/builders/52/builds/11843] is 
also able to reproduce the leaks.)

https://github.com/llvm/llvm-project/pull/162740
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to