Compiler crash building mariadb 12.3.2 on FreeBSD 16-CURRENT
- Dominant language
- LLVM
- Stars
- 40.5k
- Forks
- 18.7k
- PR merge metrics
- PR metrics pending
Description
Building with:
```
$ cc --version
FreeBSD clang version 21.1.8 (https://github.com/llvm/llvm-project.git llvmorg-21.1.8-0-g2078da43e25a)
Target: x86_64-unknown-freebsd16.0
Thread model: posix
InstalledDir: /usr/bin
Build config: +assertions
```
as shipped on FreeBSD 16-CURRENT, we get building port databases/mariadb123-server:
```
===> Building for mariadb123-server-12.3.2_1
[ 0% 1/788] /usr/bin/c++ -DHAVE_CONFIG_H -DHAVE_EVENT_SCHEDULER -DHAVE_POOL_OF_THREADS -DMYSQL_SERVER -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/wsrep-lib/include -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/wsrep-lib/wsrep-API/v26 -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/include -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/include/providers -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/sql -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/tpool -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -fstack-protector --param=ssp-buffer-size=4 -Werror=uninitialized-explicit-init -Werror=uninitialized-const-reference -Werror=uninitialized-explicit-init -Werror=uninitialized-const-reference -Werror=uninitialized -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -DNDEBUG -D_FORTIFY_SOURCE=2 -DDBUG_OFF -std=gnu++17 -DHAVE_OPENSSL -DOPENSSL_API_COMPAT=0x10100000L -MD -MT sql/CMakeFiles/sql.dir/mdl.cc.o -MF sql/CMakeFiles/sql.dir/mdl.cc.o.d -o sql/CMakeFiles/sql.dir/mdl.cc.o -c /wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/sql/mdl.cc
FAILED: [code=1] sql/CMakeFiles/sql.dir/mdl.cc.o
/usr/bin/c++ -DHAVE_CONFIG_H -DHAVE_EVENT_SCHEDULER -DHAVE_POOL_OF_THREADS -DMYSQL_SERVER -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/wsrep-lib/include -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/wsrep-lib/wsrep-API/v26 -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/include -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/include/providers -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/sql -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/tpool -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -fstack-protector --param=ssp-buffer-size=4 -Werror=uninitialized-explicit-init -Werror=uninitialized-const-reference -Werror=uninitialized-explicit-init -Werror=uninitialized-const-reference -Werror=uninitialized -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -DNDEBUG -D_FORTIFY_SOURCE=2 -DDBUG_OFF -std=gnu++17 -DHAVE_OPENSSL -DOPENSSL_API_COMPAT=0x10100000L -MD -MT sql/CMakeFiles/sql.dir/mdl.cc.o -MF sql/CMakeFiles/sql.dir/mdl.cc.o.d -o sql/CMakeFiles/sql.dir/mdl.cc.o -c /wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/sql/mdl.cc
Assertion failed: (E->isGLValue() || E->getType()->isFunctionType() || E->getType()->isVoidType() || isa(E->IgnoreParens())), function EvaluateLValue, file /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp, line 8955.
PLEASE submit a bug report to https://bugs.freebsd.org/submit/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /usr/bin/c++ -DHAVE_CONFIG_H -DHAVE_EVENT_SCHEDULER -DHAVE_POOL_OF_THREADS -DMYSQL_SERVER -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/wsrep-lib/include -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/wsrep-lib/wsrep-API/v26 -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/include -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/include/providers -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/sql -I/wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/tpool -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -fstack-protector --param=ssp-buffer-size=4 -Werror=uninitialized-explicit-init -Werror=uninitialized-const-reference -Werror=uninitialized-explicit-init -Werror=uninitialized-const-reference -Werror=uninitialized -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -DNDEBUG -D_FORTIFY_SOURCE=2 -DDBUG_OFF -std=gnu++17 -DHAVE_OPENSSL -DOPENSSL_API_COMPAT=0x10100000L -MD -MT sql/CMakeFiles/sql.dir/mdl.cc.o -MF sql/CMakeFiles/sql.dir/mdl.cc.o.d -o sql/CMakeFiles/sql.dir/mdl.cc.o -c /wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/sql/mdl.cc
1. /wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/sql/mdl.cc:854:7: current parser token 'if'
2. /wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/sql/mdl.cc:388:1: parsing struct/union/class body 'MDL_lock'
3. /wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/sql/mdl.cc:851:5: parsing function body 'MDL_lock::Fast_road::enable'
4. /wrkdirs/usr/ports/databases/mariadb123-server/work/mariadb-12.3.2/sql/mdl.cc:851:5: in compound statement ('{}')
#0 0x00000fb01d988f46 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/llvm/lib/Support/Unix/Signals.inc:0:13
#1 0x00000fb01d986983 llvm::sys::RunSignalHandlers() /usr/home/fuz/freebsd-md/src/contrib/llvm-project/llvm/lib/Support/Signals.cpp:105:18
#2 0x00000fb01d92a9e2 HandleCrash /usr/home/fuz/freebsd-md/src/contrib/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:73:5
#3 0x00000fb01d92a9e2 CrashRecoverySignalHandler /usr/home/fuz/freebsd-md/src/contrib/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:390:51
#4 0x00000fb0132959bc handle_signal /usr/home/fuz/freebsd-md/src/lib/libthr/thread/thr_sig.c:0:3
#5 0x00000fb013294fdb thr_sighandler /usr/home/fuz/freebsd-md/src/lib/libthr/thread/thr_sig.c:262:1
#6 0x00000fb01129c2d3 ([vdso]+0x2d3)
#7 0x00000fb02418eeea _thr_kill /usr/obj/usr/home/fuz/freebsd-md/src/amd64.amd64/lib/libsys/thr_kill.S:4:0
#8 0x00000fb02259d044 __raise /usr/home/fuz/freebsd-md/src/lib/libc/gen/raise.c:0:10
#9 0x00000fb02264f7a9 abort /usr/home/fuz/freebsd-md/src/lib/libc/stdlib/abort.c:67:17
#10 0x00000fb02257fa01 (/lib/libc.so.7+0xaba01)
#11 0x00000fb0157dbbd0 CheckLValueConstantExpression /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp:2343:0
#12 0x00000fb0157fbfab VisitCXXNewExpr /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp:10338:10
#13 0x00000fb0157fea36 getFalseExpr /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/include/clang/AST/Expr.h:4351:50
#14 0x00000fb0157fea36 HandleConditionalOperator /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp:8038:33
#15 0x00000fb0157fea36 VisitConditionalOperator /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp:8212:10
#16 0x00000fb0157f6f75 EvaluatePointer /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp:0:60
#17 0x00000fb0157e13b0 Evaluate /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp:16645:9
#18 0x00000fb0157e589e VisitBinAssign /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp:9361:8
#19 0x00000fb0157dbb37 EvaluateLValue /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp:0:59
#20 0x00000fb0157e127f Evaluate /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp:16634:9
#21 0x00000fb0157dedf7 EvaluateAsRValue /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp:16763:7
#22 0x00000fb0157df09a clang::Expr::EvaluateForOverflow(clang::ASTContext const&) const /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/AST/ExprConstant.cpp:17219:3
#23 0x00000fb016bd8753 empty /usr/home/fuz/freebsd-md/src/contrib/llvm-project/llvm/include/llvm/ADT/SmallVector.h:82:46
#24 0x00000fb016bd8753 clang::Sema::CheckForIntOverflow(clang::Expr const*) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Sema/SemaChecking.cpp:13202:19
#25 0x00000fb016bd8fdb clang::Sema::CheckCompletedExpr(clang::Expr*, clang::SourceLocation, bool) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Sema/SemaChecking.cpp:14094:3
#26 0x00000fb016ed845f clang::Sema::ActOnFinishFullExpr(clang::Expr*, clang::SourceLocation, bool, bool, bool) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Sema/SemaExprCXX.cpp:7734:7
#27 0x00000fb01714ef1f clang::Sema::ActOnExprStmt(clang::ActionResult, bool) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Sema/SemaStmt.cpp:52:8
#28 0x00000fb016a7dad8 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/ParseStmt.cpp:269:5
#29 0x00000fb016a7d2cf clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/ParseStmt.cpp:75:20
#30 0x00000fb016a876c3 clang::Parser::ParseCompoundStatementBody(bool) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/ParseStmt.cpp:0:11
#31 0x00000fb016a882e5 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/ParseStmt.cpp:2393:21
#32 0x00000fb0169bc2e9 clang::Parser::ParseLexedMethodDef(clang::Parser::LexedMethod&) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/ParseCXXInlineMethods.cpp:0:3
#33 0x00000fb0169bafaa clang::Parser::ParseLexedMethodDefs(clang::Parser::ParsingClass&) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/ParseCXXInlineMethods.cpp:570:33
#34 0x00000fb0169bafaa clang::Parser::ParseLexedMethodDefs(clang::Parser::ParsingClass&) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/ParseCXXInlineMethods.cpp:570:33
#35 0x00000fb0169f6c6d clang::Parser::ParseCXXMemberSpecification(clang::SourceLocation, clang::SourceLocation, clang::ParsedAttributes&, unsigned int, clang::Decl*) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:3797:21
#36 0x00000fb0169f45e8 clang::Parser::ParseClassSpecifier(clang::tok::TokenKind, clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext, clang::ParsedAttributes&) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:0:7
#37 0x00000fb0169d0ed7 empty /usr/home/fuz/freebsd-md/src/contrib/llvm-project/llvm/include/llvm/ADT/SmallVector.h:82:46
#38 0x00000fb0169d0ed7 empty /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/include/clang/Sema/ParsedAttr.h:822:40
#39 0x00000fb0169d0ed7 clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/ParseDecl.cpp:4461:23
#40 0x00000fb016aa137f clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/Parser.cpp:1096:10
#41 0x00000fb016aa0f95 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/Parser.cpp:1209:12
#42 0x00000fb016a9fefa clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/Parser.cpp:0:14
#43 0x00000fb016a9e695 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr&, clang::Sema::ModuleImportState&) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/Parser.cpp:745:10
#44 0x00000fb0169b783e clang::ParseAST(clang::Sema&, bool, bool) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Parse/ParseAST.cpp:169:5
#45 0x00000fb016822c38 clang::FrontendAction::Execute() /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1225:10
#46 0x00000fb0167a36bd getPtr /usr/home/fuz/freebsd-md/src/contrib/llvm-project/llvm/include/llvm/Support/Error.h:278:42
#47 0x00000fb0167a36bd operator bool /usr/home/fuz/freebsd-md/src/contrib/llvm-project/llvm/include/llvm/Support/Error.h:241:16
#48 0x00000fb0167a36bd clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1055:23
#49 0x00000fb0168c3095 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:299:25
#50 0x00000fa7f0766304 cc1_main /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/tools/driver/cc1_main.cpp:297:15
#51 0x00000fa7f0774185 ExecuteCC1Tool /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/tools/driver/driver.cpp:225:12
#52 0x00000fb01646473e operator() /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Driver/Job.cpp:436:30
#53 0x00000fb01646473e callback_fn<(lambda at /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Driver/Job.cpp:436:22)> /usr/home/fuz/freebsd-md/src/contrib/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
#54 0x00000fb01d92a63c operator() /usr/home/fuz/freebsd-md/src/contrib/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:0:12
#55 0x00000fb01d92a63c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:426:3
#56 0x00000fb016463cba clang::driver::CC1Command::Execute(llvm::ArrayRef>, std::__1::basic_string, std::__1::allocator>*, bool*) const /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Driver/Job.cpp:436:7
#57 0x00000fb0164235f4 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Driver/Compilation.cpp:196:15
#58 0x00000fb01642387c clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl>&, bool) const /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Driver/Compilation.cpp:251:13
#59 0x00000fb016442f36 empty /usr/home/fuz/freebsd-md/src/contrib/llvm-project/llvm/include/llvm/ADT/SmallVector.h:82:46
#60 0x00000fb016442f36 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl>&) /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/lib/Driver/Driver.cpp:2246:23
#61 0x00000fa7f077384c clang_main /usr/home/fuz/freebsd-md/src/contrib/llvm-project/clang/tools/driver/driver.cpp:406:21
#62 0x00000fa7f0771f02 main /usr/home/fuz/freebsd-md/src/usr.bin/clang/clang/clang-driver.cpp:17:10
#63 0x00000fb02257183f __libc_start1 /usr/home/fuz/freebsd-md/src/lib/libc/csu/libc_start1.c:180:2
c++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
FreeBSD clang version 21.1.8 (https://github.com/llvm/llvm-project.git llvmorg-21.1.8-0-g2078da43e25a)
Target: x86_64-unknown-freebsd16.0
Thread model: posix
InstalledDir: /usr/bin
Build config: +assertions
c++: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
c++: note: diagnostic msg: /tmp/mdl-613c97.cpp
c++: note: diagnostic msg: /tmp/mdl-613c97.sh
c++: note: diagnostic msg:
********************
ninja: build stopped: subcommand failed.
*** Error code 1
Stop.
make: stopped making "all" in /usr/ports/databases/mariadb123-server
```
Please find attached the reproducer.
[mdl-613c97.cpp](https://github.com/user-attachments/files/30407582/mdl-613c97.cpp)
[mdl-613c97.sh](https://github.com/user-attachments/files/30407581/mdl-613c97.sh)
Contributor guide
Research direction
Reproduce the crash while compiling MariaDB 12.3.2, starting with sql/mdl.cc around lines 851-854 and the reported clang stack in ExprConstant.cpp's EvaluateLValue path. Compare the failing FreeBSD clang behavior with a working compiler or reduced input; done means the reported source no longer triggers the assertion during compilation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, mariadb
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100