-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Closed
Labels
crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]flang:frontendgenerated by fuzzer
Description
Hi there, flang crashes from an assertion failure on the following test case:
subroutine s()
real(16), parameter :: a(128:0) = SUM([1])
integer(8) :: e1
y = x * y
y = b + (s * ((SUM([1]) + cmplx([sinh(a)]) + 3.14) ** (nint(a, 1)))) + 3.14
endTested version(s): 19.1.0, trunk (ASAN + Assertions).
I can stably reproduce this locally with 19.1.0, trunk, but cannot reproduce it on Compiler Explorer.
Build command:
export ASAN_OPTIONS=detect_leaks=0,abort_on_error=1,symbolize=0
CC=clang-14 CXX=clang++-14 cmake \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$INSTALLDIR \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DLLVM_USE_SANITIZER=Address \
-DFLANG_ENABLE_WERROR=ON \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DLLVM_TARGETS_TO_BUILD=host \
-DLLVM_LIT_ARGS=-v \
-DLLVM_ENABLE_PROJECTS="clang;mlir;flang;openmp" \
-DLLVM_ENABLE_RUNTIMES="compiler-rt" \
../llvm
CC=clang-14 CXX=clang++-14 ninja
Stack dump from trunk:
Click me
fatal internal error: CHECK(rightIter != rightArrConst.end()) failed at /repo/llvm-project-250107-trunk/flang/lib/Evaluate/fold-implementation.h(1481)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: <path>/bin/flang -fc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu x86-64 -resource-dir <path>/lib/clang/20 -mframe-pointer=all -o /tmp/asan_crash4-70c95e.o -x f95-cpp-input /tmp/asan_crash4.f90
#0 0x000055a6ca50884b backtrace (<path>/bin/flang+0x2e6884b)
#1 0x000055a6cb6b891d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /repo/llvm-project-250107-trunk/llvm/lib/Support/Unix/Signals.inc:727:8
#2 0x000055a6cb6b0e37 llvm::sys::RunSignalHandlers() /repo/llvm-project-250107-trunk/llvm/lib/Support/Signals.cpp:0:5
#3 0x000055a6cb6ba5e4 SignalHandler(int) /repo/llvm-project-250107-trunk/llvm/lib/Support/Unix/Signals.inc:0:3
#4 0x00007f5f05325520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#5 0x00007f5f053799fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#6 0x00007f5f053799fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#7 0x00007f5f053799fc pthread_kill ./nptl/pthread_kill.c:89:10
#8 0x00007f5f05325476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#9 0x00007f5f0530b7f3 abort ./stdlib/abort.c:81:7
#10 0x000055a6d33a039a Fortran::common::die(char const*, ...) /repo/llvm-project-250107-trunk/flang/lib/Common/idioms.cpp:19:42
#11 0x000055a6d075e8b8 __do_visit<void, (lambda at /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/variant:427:24), std::variant<Fortran::evaluate::Parentheses<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> >, Fortran::evaluate::Negate<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> >, Fortran::evaluate::Add<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> >, Fortran::evaluate::Subtract<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> >, Fortran::evaluate::Multiply<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> >, Fortran::evaluate::Divide<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> >, Fortran::evaluate::Power<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> >, Fortran::evaluate::Extremum<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> >, Fortran::evaluate::Convert<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8>, Fortran::common::TypeCategory::Integer>, Fortran::evaluate::Convert<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8>, Fortran::common::TypeCategory::Real>, Fortran::evaluate::Convert<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8>, Fortran::common::TypeCategory::Unsigned>, Fortran::evaluate::ImpliedDoIndex, Fortran::evaluate::TypeParamInquiry, Fortran::evaluate::DescriptorInquiry, Fortran::evaluate::Constant<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> >, Fortran::evaluate::ArrayConstructor<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> >, Fortran::evaluate::Designator<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> >, Fortran::evaluate::FunctionRef<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> > > &> /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/variant:1760:34
#12 0x000055a6d075e8b8 _M_reset /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/variant:427:2
#13 0x000055a6d075e8b8 ~_Variant_storage /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/variant:436:9
#14 0x000055a6d075e8b8 ~Expr /repo/llvm-project-250107-trunk/flang/include/flang/Evaluate/expression.h:619:1
#15 0x000055a6d075e8b8 _M_destroy /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/optional:260:23
#16 0x000055a6d075e8b8 _M_reset /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/optional:280:4
#17 0x000055a6d075e8b8 ~_Optional_payload /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/optional:401:57
#18 0x000055a6d075e8b8 ~_Optional_base /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/optional:472:12
#19 0x000055a6d075e8b8 _Destroy<std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> > > > /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:151:19
#20 0x000055a6d075e8b8 __destroy<std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> > > *> /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:163:6
#21 0x000055a6d075e8b8 _Destroy<std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> > > *> /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_construct.h:195:7
#22 0x000055a6d075e8b8 _Destroy<std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> > > *, std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> > > > /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/alloc_traits.h:848:7
#23 0x000055a6d075e8b8 ~vector /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_vector.h:680:2
#24 0x000055a6d075e8b8 _M_destroy /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/optional:260:23
#25 0x000055a6d075e8b8 _M_reset /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/optional:280:4
#26 0x000055a6d075e8b8 ~_Optional_payload /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/optional:401:57
#27 0x000055a6d075e8b8 ~_Optional_base /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/optional:472:12
#28 0x000055a6d075e8b8 bool Fortran::evaluate::ShapesMatch<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>, Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 1>>(Fortran::evaluate::FoldingContext&, Fortran::evaluate::ArrayConstructor<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>> const&, Fortran::evaluate::ArrayConstructor<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 1>> const&) /repo/llvm-project-250107-trunk/flang/lib/Evaluate/fold-implementation.h:1493:3
#29 0x000055a6d075a9bc bool std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>>> Fortran::evaluate::MapOperation<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>, Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>, Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>(Fortran::evaluate::FoldingContext&, std::function<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>> (Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>>&&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&&)>&&, std::vector<std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 8>>>, std::allocator<std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 8>>>>> const&, std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 8>>>&&, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>>&&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&&)::'lambda'(Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>&&)::operator()<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 1>>>(Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>&&) const /repo/llvm-project-250107-trunk/flang/lib/Evaluate/fold-implementation.h:0:16
#30 0x000055a6d075692f visit<(lambda at /repo/llvm-project-250107-trunk/flang/lib/Evaluate/fold-implementation.h:1508:9), std::variant<Fortran::evaluate::Expr<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 1> >, Fortran::evaluate::Expr<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 2> >, Fortran::evaluate::Expr<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 4> >, Fortran::evaluate::Expr<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 8> >, Fortran::evaluate::Expr<Fortran::evaluate::Type<Fortran::common::TypeCategory::Integer, 16> > > > /repo/llvm-project-250107-trunk/flang/include/flang/Common/visit.h:0:12
#31 0x000055a6d075692f std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>>> Fortran::evaluate::MapOperation<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>, Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>, Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>(Fortran::evaluate::FoldingContext&, std::function<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>> (Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>>&&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&&)>&&, std::vector<std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 8>>>, std::allocator<std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 8>>>>> const&, std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)0, 8>>>&&, Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>>&&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&&) /repo/llvm-project-250107-trunk/flang/lib/Evaluate/fold-implementation.h:1507:17
#32 0x000055a6d0754043 std::optional<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>>> Fortran::evaluate::ApplyElementwise<Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>>, Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>, Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>, Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>(Fortran::evaluate::FoldingContext&, Fortran::evaluate::Operation<Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>>, Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>, Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>, Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&, std::function<Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>> (Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>>&&, Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)0>>&&)>&&) /repo/llvm-project-250107-trunk/flang/lib/Evaluate/fold-implementation.h:1658:24
#33 0x000055a6d07534a5 ~_Function_base /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:243:11
#34 0x000055a6d07534a5 ApplyElementwise<Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex, 4> >, Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex, 4>, Fortran::evaluate::Type<Fortran::common::TypeCategory::Complex, 4>, Fortran::evaluate::SomeKind<Fortran::common::TypeCategory::Integer> > /repo/llvm-project-250107-trunk/flang/lib/Evaluate/fold-implementation.h:1691:3
#35 0x000055a6d07534a5 Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>> Fortran::evaluate::FoldOperation<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>>(Fortran::evaluate::FoldingContext&, Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<(Fortran::common::TypeCategory)3, 4>>&&) /repo/llvm-project-250107-trunk/flang/lib/Evaluate/fold-implementation.h:2141:18
... manually truncated
#96 0x000055a6cee011be ~map /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_map.h:302:22
#97 0x000055a6cee011be ~ExpressionAnalyzer /repo/llvm-project-250107-trunk/flang/include/flang/Semantics/expression.h:102:7
#98 0x000055a6cee011be ~ExprChecker /repo/llvm-project-250107-trunk/flang/include/flang/Semantics/expression.h:450:7
#99 0x000055a6cee011be PerformStatementSemantics /repo/llvm-project-250107-trunk/flang/lib/Semantics/semantics.cpp:212:3
#100 0x000055a6cee011be Fortran::semantics::Semantics::Perform() /repo/llvm-project-250107-trunk/flang/lib/Semantics/semantics.cpp:648:7
#101 0x000055a6cb75df0b Fortran::frontend::FrontendAction::runSemanticChecks() /repo/llvm-project-250107-trunk/flang/lib/Frontend/FrontendAction.cpp:0:13
#102 0x000055a6ccd18185 Fortran::frontend::CodeGenAction::beginSourceFileAction() /repo/llvm-project-250107-trunk/flang/lib/Frontend/FrontendActions.cpp:287:34
#103 0x000055a6cb75c21c Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) /repo/llvm-project-250107-trunk/flang/lib/Frontend/FrontendAction.cpp:0:8
#104 0x000055a6cb70d5df Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) /repo/llvm-project-250107-trunk/flang/lib/Frontend/CompilerInstance.cpp:172:9
#105 0x000055a6cb7687b7 Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) /repo/llvm-project-250107-trunk/flang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:222:25
#106 0x000055a6ca5889ed fc1_main(llvm::ArrayRef<char const*>, char const*) /repo/llvm-project-250107-trunk/flang/tools/flang-driver/fc1_main.cpp:91:13
#107 0x000055a6ca583dc2 executeFC1Tool /repo/llvm-project-250107-trunk/flang/tools/flang-driver/driver.cpp:66:12
#108 0x000055a6ca583dc2 main /repo/llvm-project-250107-trunk/flang/tools/flang-driver/driver.cpp:110:14
#109 0x00007f5f0530cd90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#110 0x00007f5f0530ce40 call_init ./csu/../csu/libc-start.c:128:20
#111 0x00007f5f0530ce40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#112 0x000055a6ca4ce945 _start (<path>/bin/flang+0x2e2e945)
flang-20: error: unable to execute command: Aborted
flang-20: error: flang frontend command failed due to signal (use -v to see invocation)
flang version 20.0.0git (https://github.com/llvm/llvm-project.git ac604b2fa6ff0344a555954069721c0db7b874f9)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: <path>/bin
Build config: +assertions, +asan
The test case was generated by a fuzzer.
Metadata
Metadata
Assignees
Labels
crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]flang:frontendgenerated by fuzzer