Skip to content

Conversation

@alexreinking
Copy link
Member

Destructors are noexcept(true) by default and throwing (as user_error does) in such a function always calls std::terminate. That made this particular exception non-recoverable in user code.

The included test aborts without the patch to PartitionLoops.cpp.

Copy link
Contributor

@mcourteaux mcourteaux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Today I learned that destructors are always by default noexcept.

@alexreinking
Copy link
Member Author

Going to investigate the memory leak reported here.

@alexreinking
Copy link
Member Author

I went in and built llvm-symbolizer (and updated the build master so it will do it automatically going forward) to get stack traces to the leaking allocations... looks like it's finding leaks in other parts of the compiler unrelated to PartitionLoops. Worse, I wasn't able to reproduce the leak on either my Ubuntu 24.04 x86 desktop or my MacBook. On Ubuntu, Valgrind says everything is "still reachable" (some of the LLVM command-line options stuff stores new'd pointers in global, static memory, apparently).

I wonder if this is a consequence of throwing in a destructor?

Here's the more detailed leak report:

Details
halidenightly@linux-buildbot-1:~/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-build$ HL_COMPILER_STACK_SIZE=0 ./test/correctness/correctness_bad_partition_always_throws 
Success!

=================================================================
==2491563==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 88 byte(s) in 1 object(s) allocated from:
    #0 0x6158405fef6d in operator new(unsigned long) /home/halidenightly/build_bot/worker/llvm-main-x86-64-linux/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
    #1 0x778285eafad2 in Halide::Internal::For::make(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Expr, Halide::Expr, Halide::Internal::ForType, Halide::Partition, Halide::DeviceAPI, Halide::Internal::Stmt) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:355:17
    #2 0x778285f09ba5 in Halide::Internal::IRMutator::visit(Halide::Internal::For const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRMutator.cpp:212:12
    #3 0x778285ebfab2 in Halide::Internal::StmtNode<Halide::Internal::For>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1360:15
    #4 0x778285ebfa66 in Halide::Internal::StmtNode<Halide::Internal::ProducerConsumer>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1356:15
    #5 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #6 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #7 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #8 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #9 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #10 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #11 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #12 0x778285ebfcc6 in Halide::Internal::StmtNode<Halide::Internal::IfThenElse>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1388:15
    #13 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #14 0x778285ebf9ce in Halide::Internal::StmtNode<Halide::Internal::LetStmt>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1348:15
    #15 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #16 0x778286082fd6 in Halide::Internal::(anonymous namespace)::lower_impl(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&, Halide::Module&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Lower.cpp:370:9
    #17 0x77828607d5b8 in Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0::operator()() const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Lower.cpp:629:9
    #18 0x77828607d5b8 in void std::__invoke_impl<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>(std::__invoke_other, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14
    #19 0x77828607d5b8 in std::enable_if<is_invocable_r_v<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>, void>::type std::__invoke_r<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>(Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2
    #20 0x77828607d5b8 in std::_Function_handler<void (), Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9
    #21 0x7782861c0c00 in Halide::Pipeline::compile_to_module(std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, Halide::LinkageType) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:558:28
    #22 0x7782861c7f5c in Halide::Pipeline::compile_jit(Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:633:21
    #23 0x7782861ce1b5 in Halide::Pipeline::realize(Halide::JITUserContext*, std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:777:5
    #24 0x7782861cdc07 in Halide::Pipeline::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:759:12
    #25 0x778285c3fe77 in Halide::Func::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Func.cpp:3399:23
    #26 0x6158406008d6 in main /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/test/correctness/bad_partition_always_throws.cpp:14:11
    #27 0x778281229d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

Indirect leak of 168 byte(s) in 1 object(s) allocated from:
    #0 0x6158405fef6d in operator new(unsigned long) /home/halidenightly/build_bot/worker/llvm-main-x86-64-linux/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
    #1 0x778286180a70 in Halide::Parameter::Parameter(Halide::Type const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Buffer<void, -1> const&, int, std::vector<Halide::BufferConstraint, std::allocator<Halide::BufferConstraint>> const&, Halide::MemoryType) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Parameter.cpp:88:16

Indirect leak of 96 byte(s) in 1 object(s) allocated from:
    #0 0x6158405fef6d in operator new(unsigned long) /home/halidenightly/build_bot/worker/llvm-main-x86-64-linux/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
    #1 0x778285eb88dc in Halide::Internal::Variable::make(Halide::Type, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Buffer<void, -1>, Halide::Parameter, Halide::Internal::ReductionDomain) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:763:22
    #2 0x778285c4ee57 in Halide::Internal::Variable::make(Halide::Type, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Internal::ReductionDomain) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.h:827:16
    #3 0x778286231ad5 in Halide::Internal::(anonymous namespace)::QualifyExpr::visit(Halide::Internal::Variable const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Qualify.cpp:21:20
    #4 0x778285ebf261 in Halide::Internal::ExprNode<Halide::Internal::Variable>::mutate_expr(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1247:15
    #5 0x778286315378 in Halide::Internal::(anonymous namespace)::build_provide_loop_nest(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Halide::Internal::Function, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, Halide::Internal::Function>>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Internal::Function const&, Halide::Internal::Definition const&, int, bool) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/ScheduleFunctions.cpp:492:13
    #6 0x7782862d5ffd in Halide::Internal::(anonymous namespace)::InjectFunctionRealization::build_produce_definition(Halide::Internal::Function const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Internal::Definition const&, bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Halide::Expr, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, Halide::Expr>>>&, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Halide::Expr>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Halide::Expr>>>&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>>>&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/ScheduleFunctions.cpp:1568:24
    #7 0x7782862d5ffd in Halide::Internal::(anonymous namespace)::InjectFunctionRealization::build_pipeline_group(Halide::Internal::Stmt) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/ScheduleFunctions.cpp:1846:39
    #8 0x7782862c6ed6 in Halide::Internal::(anonymous namespace)::InjectFunctionRealization::visit(Halide::Internal::For const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/ScheduleFunctions.cpp:1301:20
    #9 0x778285ebfab2 in Halide::Internal::StmtNode<Halide::Internal::For>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1360:15
    #10 0x77828607e400 in Halide::Internal::(anonymous namespace)::lower_impl(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&, Halide::Module&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Lower.cpp:183:14
    #11 0x77828607d5b8 in Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0::operator()() const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Lower.cpp:629:9
    #12 0x77828607d5b8 in void std::__invoke_impl<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>(std::__invoke_other, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14
    #13 0x77828607d5b8 in std::enable_if<is_invocable_r_v<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>, void>::type std::__invoke_r<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>(Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2
    #14 0x77828607d5b8 in std::_Function_handler<void (), Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9
    #15 0x7782861c0c00 in Halide::Pipeline::compile_to_module(std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, Halide::LinkageType) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:558:28
    #16 0x7782861c7f5c in Halide::Pipeline::compile_jit(Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:633:21
    #17 0x7782861ce1b5 in Halide::Pipeline::realize(Halide::JITUserContext*, std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:777:5
    #18 0x7782861cdc07 in Halide::Pipeline::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:759:12
    #19 0x778285c3fe77 in Halide::Func::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Func.cpp:3399:23
    #20 0x6158406008d6 in main /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/test/correctness/bad_partition_always_throws.cpp:14:11
    #21 0x778281229d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

Indirect leak of 96 byte(s) in 1 object(s) allocated from:
    #0 0x6158405fef6d in operator new(unsigned long) /home/halidenightly/build_bot/worker/llvm-main-x86-64-linux/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
    #1 0x778285eb0a27 in Halide::Internal::Store::make(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Expr, Halide::Expr, Halide::Parameter, Halide::Expr, Halide::Internal::ModulusRemainder) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:385:19
    #2 0x7782859caf34 in Halide::Internal::(anonymous namespace)::Interleaver::visit(Halide::Internal::Store const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Deinterleave.cpp:636:21
    #3 0x778285ebfafe in Halide::Internal::StmtNode<Halide::Internal::Store>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1364:15
    #4 0x778285ebfab2 in Halide::Internal::StmtNode<Halide::Internal::For>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1360:15
    #5 0x778285ebfa66 in Halide::Internal::StmtNode<Halide::Internal::ProducerConsumer>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1356:15
    #6 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #7 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #8 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #9 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #10 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #11 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #12 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #13 0x778285ebfcc6 in Halide::Internal::StmtNode<Halide::Internal::IfThenElse>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1388:15
    #14 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #15 0x778285ebf9ce in Halide::Internal::StmtNode<Halide::Internal::LetStmt>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1348:15
    #16 0x778285ebfc7a in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1384:15
    #17 0x778286082fd6 in Halide::Internal::(anonymous namespace)::lower_impl(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&, Halide::Module&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Lower.cpp:370:9
    #18 0x77828607d5b8 in Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0::operator()() const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Lower.cpp:629:9
    #19 0x77828607d5b8 in void std::__invoke_impl<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>(std::__invoke_other, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14
    #20 0x77828607d5b8 in std::enable_if<is_invocable_r_v<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>, void>::type std::__invoke_r<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>(Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2
    #21 0x77828607d5b8 in std::_Function_handler<void (), Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9
    #22 0x7782861c0c00 in Halide::Pipeline::compile_to_module(std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, Halide::LinkageType) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:558:28
    #23 0x7782861c7f5c in Halide::Pipeline::compile_jit(Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:633:21
    #24 0x7782861ce1b5 in Halide::Pipeline::realize(Halide::JITUserContext*, std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:777:5
    #25 0x7782861cdc07 in Halide::Pipeline::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:759:12
    #26 0x778285c3fe77 in Halide::Func::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Func.cpp:3399:23
    #27 0x6158406008d6 in main /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/test/correctness/bad_partition_always_throws.cpp:14:11
    #28 0x778281229d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

Indirect leak of 96 byte(s) in 1 object(s) allocated from:
    #0 0x6158405fef6d in operator new(unsigned long) /home/halidenightly/build_bot/worker/llvm-main-x86-64-linux/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
    #1 0x778285eb88dc in Halide::Internal::Variable::make(Halide::Type, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Buffer<void, -1>, Halide::Parameter, Halide::Internal::ReductionDomain) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:763:22
    #2 0x7782852ad0a5 in Halide::Internal::Variable::make(Halide::Type, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Parameter) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.h:819:16
    #3 0x7782854fed73 in Halide::Internal::(anonymous namespace)::BoundsInference::BoundsInference(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::vector<std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>>, std::allocator<std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>>>> const&, std::vector<std::set<Halide::Internal::FusedPair, std::less<Halide::Internal::FusedPair>, std::allocator<Halide::Internal::FusedPair>>, std::allocator<std::set<Halide::Internal::FusedPair, std::less<Halide::Internal::FusedPair>, std::allocator<Halide::Internal::FusedPair>>>> const&, std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::map<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int>, Halide::Internal::Interval, std::less<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int>>, std::allocator<std::pair<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int> const, Halide::Internal::Interval>>> const&, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/BoundsInference.cpp:1035:31
    #4 0x7782854f4c55 in Halide::Internal::bounds_inference(Halide::Internal::Stmt, std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, std::vector<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, std::allocator<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>> const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Halide::Internal::Function, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, Halide::Internal::Function>>> const&, std::map<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int>, Halide::Internal::Interval, std::less<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int>>, std::allocator<std::pair<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int> const, Halide::Internal::Interval>>> const&, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/BoundsInference.cpp:1396:9
    #5 0x77828607edfd in Halide::Internal::(anonymous namespace)::lower_impl(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&, Halide::Module&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Lower.cpp:216:9
    #6 0x77828607d5b8 in Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0::operator()() const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Lower.cpp:629:9
    #7 0x77828607d5b8 in void std::__invoke_impl<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>(std::__invoke_other, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14
    #8 0x77828607d5b8 in std::enable_if<is_invocable_r_v<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>, void>::type std::__invoke_r<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>(Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2
    #9 0x77828607d5b8 in std::_Function_handler<void (), Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9
    #10 0x7782861c0c00 in Halide::Pipeline::compile_to_module(std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, Halide::LinkageType) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:558:28
    #11 0x7782861c7f5c in Halide::Pipeline::compile_jit(Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:633:21
    #12 0x7782861ce1b5 in Halide::Pipeline::realize(Halide::JITUserContext*, std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:777:5
    #13 0x7782861cdc07 in Halide::Pipeline::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:759:12
    #14 0x778285c3fe77 in Halide::Func::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Func.cpp:3399:23
    #15 0x6158406008d6 in main /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/test/correctness/bad_partition_always_throws.cpp:14:11
    #16 0x778281229d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

Indirect leak of 96 byte(s) in 1 object(s) allocated from:
    #0 0x6158405fef6d in operator new(unsigned long) /home/halidenightly/build_bot/worker/llvm-main-x86-64-linux/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
    #1 0x778285eb88dc in Halide::Internal::Variable::make(Halide::Type, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Buffer<void, -1>, Halide::Parameter, Halide::Internal::ReductionDomain) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:763:22
    #2 0x7782852ad0a5 in Halide::Internal::Variable::make(Halide::Type, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Parameter) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.h:819:16
    #3 0x7782854fe5ce in Halide::Internal::(anonymous namespace)::BoundsInference::BoundsInference(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::vector<std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>>, std::allocator<std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>>>> const&, std::vector<std::set<Halide::Internal::FusedPair, std::less<Halide::Internal::FusedPair>, std::allocator<Halide::Internal::FusedPair>>, std::allocator<std::set<Halide::Internal::FusedPair, std::less<Halide::Internal::FusedPair>, std::allocator<Halide::Internal::FusedPair>>>> const&, std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::map<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int>, Halide::Internal::Interval, std::less<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int>>, std::allocator<std::pair<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int> const, Halide::Internal::Interval>>> const&, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/BoundsInference.cpp:1034:28
    #4 0x7782854f4c55 in Halide::Internal::bounds_inference(Halide::Internal::Stmt, std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, std::vector<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, std::allocator<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>> const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Halide::Internal::Function, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, Halide::Internal::Function>>> const&, std::map<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int>, Halide::Internal::Interval, std::less<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int>>, std::allocator<std::pair<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int> const, Halide::Internal::Interval>>> const&, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/BoundsInference.cpp:1396:9
    #5 0x77828607edfd in Halide::Internal::(anonymous namespace)::lower_impl(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&, Halide::Module&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Lower.cpp:216:9
    #6 0x77828607d5b8 in Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0::operator()() const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Lower.cpp:629:9
    #7 0x77828607d5b8 in void std::__invoke_impl<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>(std::__invoke_other, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14
    #8 0x77828607d5b8 in std::enable_if<is_invocable_r_v<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>, void>::type std::__invoke_r<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>(Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2
    #9 0x77828607d5b8 in std::_Function_handler<void (), Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9
    #10 0x7782861c0c00 in Halide::Pipeline::compile_to_module(std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, Halide::LinkageType) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:558:28
    #11 0x7782861c7f5c in Halide::Pipeline::compile_jit(Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:633:21
    #12 0x7782861ce1b5 in Halide::Pipeline::realize(Halide::JITUserContext*, std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:777:5
    #13 0x7782861cdc07 in Halide::Pipeline::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:759:12
    #14 0x778285c3fe77 in Halide::Func::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Func.cpp:3399:23
    #15 0x6158406008d6 in main /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/test/correctness/bad_partition_always_throws.cpp:14:11
    #16 0x778281229d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

Indirect leak of 96 byte(s) in 1 object(s) allocated from:
    #0 0x6158405fef6d in operator new(unsigned long) /home/halidenightly/build_bot/worker/llvm-main-x86-64-linux/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
    #1 0x778285eb88dc in Halide::Internal::Variable::make(Halide::Type, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Buffer<void, -1>, Halide::Parameter, Halide::Internal::ReductionDomain) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:763:22
    #2 0x778286abad3c in Halide::Internal::(anonymous namespace)::FlattenDimensions::make_shape_var(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned long, Halide::Buffer<void, -1> const&, Halide::Parameter const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/StorageFlattening.cpp:112:16
    #3 0x778286abbe22 in Halide::Internal::(anonymous namespace)::FlattenDimensions::flatten_args(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::vector<Halide::Expr, std::allocator<Halide::Expr>>, Halide::Buffer<void, -1> const&, Halide::Parameter const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/StorageFlattening.cpp:123:23
    #4 0x778286aa5524 in Halide::Internal::(anonymous namespace)::FlattenDimensions::visit(Halide::Internal::Provide const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/StorageFlattening.cpp:417:31
    #5 0x778285ebfb4a in Halide::Internal::StmtNode<Halide::Internal::Provide>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1368:15
    #6 0x778286aa31dc in Halide::Internal::(anonymous namespace)::FlattenDimensions::visit(Halide::Internal::For const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/StorageFlattening.cpp:549:32
    #7 0x778285ebfab2 in Halide::Internal::StmtNode<Halide::Internal::For>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1360:15
    #8 0x778285ebfa66 in Halide::Internal::StmtNode<Halide::Internal::ProducerConsumer>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1356:15
    #9 0x778286aa2209 in Halide::Internal::(anonymous namespace)::FlattenDimensions::visit(Halide::Internal::LetStmt const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/StorageFlattening.cpp:563:32

Indirect leak of 48 byte(s) in 1 object(s) allocated from:
    #0 0x6158405fef6d in operator new(unsigned long) /home/halidenightly/build_bot/worker/llvm-main-x86-64-linux/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
    #1 0x778285ea39f6 in Halide::Internal::Sub::make(Halide::Expr, Halide::Expr) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:56:17
    #2 0x778286741b2a in Halide::Internal::Simplify::visit(Halide::Internal::Sub const*, Halide::Internal::Simplify::ExprInfo*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Sub.cpp:450:16
    #3 0x77828637d2b2 in Halide::Expr Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_expr<Halide::Internal::Simplify::ExprInfo*&>(Halide::Internal::BaseExprNode const*, Halide::Internal::Simplify::ExprInfo*&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:190:33
    #4 0x778286730c2d in Halide::Expr Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<Halide::Internal::Simplify::ExprInfo*&>(Halide::Expr const&, Halide::Internal::Simplify::ExprInfo*&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:348:16
    #5 0x778286730c2d in Halide::Internal::Simplify::mutate(Halide::Expr const&, Halide::Internal::Simplify::ExprInfo*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:332:23
    #6 0x778286730c2d in Halide::Internal::Simplify::visit(Halide::Internal::Store const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Stmts.cpp:318:18
    #7 0x77828637e1a9 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:308:33
    #8 0x77828672cc06 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<>(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:338:16
    #9 0x77828672cc06 in Halide::Internal::Simplify::mutate(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:352:23
    #10 0x77828672cc06 in Halide::Internal::Simplify::visit(Halide::Internal::For const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Stmts.cpp:252:20
    #11 0x77828637e16a in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:304:33
    #12 0x778286735dce in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<>(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:338:16
    #13 0x778286735dce in Halide::Internal::Simplify::mutate(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:352:23
    #14 0x778286735dce in Halide::Internal::Simplify::visit(Halide::Internal::ProducerConsumer const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Stmts.cpp:433:17
    #15 0x77828637e101 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:302:33
    #16 0x7782864b3f77 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<>(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:338:16
    #17 0x7782864b3f77 in Halide::Internal::Simplify::mutate(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:352:23
    #18 0x7782864b3f77 in Halide::Internal::Simplify::mutate_let_body(Halide::Internal::Stmt const&, Halide::Internal::Simplify::ExprInfo*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:477:16
    #19 0x7782864b3f77 in Halide::Internal::Stmt Halide::Internal::Simplify::simplify_let<Halide::Internal::LetStmt, Halide::Internal::Stmt>(Halide::Internal::LetStmt const*, Halide::Internal::Simplify::ExprInfo*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Let.cpp:250:14
    #20 0x77828637e027 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:298:33
    #21 0x778286736c7a in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<>(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:338:16
    #22 0x778286736c7a in Halide::Internal::Simplify::mutate(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:352:23
    #23 0x778286736c7a in Halide::Internal::Simplify::visit(Halide::Internal::Block const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Stmts.cpp:494:16
    #24 0x77828637e1be in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:318:33
    #25 0x778286737127 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<>(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:338:16
    #26 0x778286737127 in Halide::Internal::Simplify::mutate(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:352:23
    #27 0x778286737127 in Halide::Internal::Simplify::visit(Halide::Internal::Block const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Stmts.cpp:479:25
    #28 0x77828637e1be in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:318:33
    #29 0x7782864b3f77 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<>(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:338:16
    #30 0x7782864b3f77 in Halide::Internal::Simplify::mutate(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:352:23
    #31 0x7782864b3f77 in Halide::Internal::Simplify::mutate_let_body(Halide::Internal::Stmt const&, Halide::Internal::Simplify::ExprInfo*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:477:16
    #32 0x7782864b3f77 in Halide::Internal::Stmt Halide::Internal::Simplify::simplify_let<Halide::Internal::LetStmt, Halide::Internal::Stmt>(Halide::Internal::LetStmt const*, Halide::Internal::Simplify::ExprInfo*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Let.cpp:250:14
    #33 0x77828637e027 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:298:33
    #34 0x778286737127 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<>(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:338:16
    #35 0x778286737127 in Halide::Internal::Simplify::mutate(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:352:23
    #36 0x778286737127 in Halide::Internal::Simplify::visit(Halide::Internal::Block const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Stmts.cpp:479:25
    #37 0x77828637e1be in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:318:33
    #38 0x778286723101 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<>(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:338:16
    #39 0x778286723101 in Halide::Internal::Simplify::mutate(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:352:23
    #40 0x778286723101 in Halide::Internal::Simplify::visit(Halide::Internal::IfThenElse const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Stmts.cpp:40:21
    #41 0x77828637e1d3 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:322:33
    #42 0x778286736c7a in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<>(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:338:16
    #43 0x778286736c7a in Halide::Internal::Simplify::mutate(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:352:23
    #44 0x778286736c7a in Halide::Internal::Simplify::visit(Halide::Internal::Block const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Stmts.cpp:494:16
    #45 0x77828637e1be in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:318:33
    #46 0x778286736c7a in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<>(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:338:16
    #47 0x778286736c7a in Halide::Internal::Simplify::mutate(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:352:23
    #48 0x778286736c7a in Halide::Internal::Simplify::visit(Halide::Internal::Block const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Stmts.cpp:494:16
    #49 0x77828637e1be in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:318:33
    #50 0x7782864b3f77 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<>(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:338:16
    #51 0x7782864b3f77 in Halide::Internal::Simplify::mutate(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:352:23
    #52 0x7782864b3f77 in Halide::Internal::Simplify::mutate_let_body(Halide::Internal::Stmt const&, Halide::Internal::Simplify::ExprInfo*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:477:16
    #53 0x7782864b3f77 in Halide::Internal::Stmt Halide::Internal::Simplify::simplify_let<Halide::Internal::LetStmt, Halide::Internal::Stmt>(Halide::Internal::LetStmt const*, Halide::Internal::Simplify::ExprInfo*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Let.cpp:250:14
    #54 0x77828637e027 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:298:33
    #55 0x778286737127 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch<>(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:338:16
    #56 0x778286737127 in Halide::Internal::Simplify::mutate(Halide::Internal::Stmt const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Internal.h:352:23
    #57 0x778286737127 in Halide::Internal::Simplify::visit(Halide::Internal::Block const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Simplify_Stmts.cpp:479:25
    #58 0x77828637e1be in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IRVisitor.h:318:33

Indirect leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x6158405fef6d in operator new(unsigned long) /home/halidenightly/build_bot/worker/llvm-main-x86-64-linux/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
    #1 0x778285b301dd in Halide::Internal::IntImm::make(Halide::Type, long) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Expr.cpp:21:20
    #2 0x778285a778e4 in Halide::Internal::Deserializer::deserialize_expr(Halide::Serialize::Expr, void const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Deserialization.cpp:679:16
    #3 0x778285a8fb02 in Halide::Internal::Deserializer::deserialize_expr_vector(flatbuffers::Vector<Halide::Serialize::Expr, unsigned int> const*, flatbuffers::Vector<flatbuffers::Offset<void>, unsigned int> const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Deserialization.cpp:947:21
    #4 0x778285a71290 in Halide::Internal::Deserializer::deserialize_definition(Halide::Serialize::Definition const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Deserialization.cpp:1053:25
    #5 0x778285a6c96b in Halide::Internal::Deserializer::deserialize_function(Halide::Serialize::Func const*, Halide::Internal::Function&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Deserialization.cpp:470:27
    #6 0x778285aa2d21 in Halide::Internal::Deserializer::deserialize(std::vector<unsigned char, std::allocator<unsigned char>> const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Deserialization.cpp:1471:9
    #7 0x778285aa6e64 in Halide::deserialize_pipeline(std::vector<unsigned char, std::allocator<unsigned char>> const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Halide::Parameter, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, Halide::Parameter>>> const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Deserialization.cpp:1561:25
    #8 0x7782861c7453 in Halide::Pipeline::compile_jit(Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:607:34
    #9 0x7782861ce1b5 in Halide::Pipeline::realize(Halide::JITUserContext*, std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:777:5
    #10 0x7782861cdc07 in Halide::Pipeline::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:759:12
    #11 0x778285c3fe77 in Halide::Func::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Func.cpp:3399:23
    #12 0x6158406008d6 in main /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/test/correctness/bad_partition_always_throws.cpp:14:11
    #13 0x778281229d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

Indirect leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x6158405fef6d in operator new(unsigned long) /home/halidenightly/build_bot/worker/llvm-main-x86-64-linux/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
    #1 0x778285b30592 in Halide::Internal::UIntImm::make(Halide::Type, unsigned long) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Expr.cpp:37:21
    #2 0x778285f15ab5 in Halide::Expr Halide::Internal::(anonymous namespace)::make_const_helper<long>(Halide::Type, long) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IROperator.cpp:370:16
    #3 0x778285f15ab5 in Halide::Internal::make_const(Halide::Type, long) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IROperator.cpp:382:12
    #4 0x778285f177d2 in Halide::Internal::make_const(Halide::Type, int) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IROperator.h:88:12
    #5 0x778285f177d2 in Halide::Internal::make_one(Halide::Type) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IROperator.cpp:406:12
    #6 0x778285f177d2 in Halide::Internal::const_true(int) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IROperator.cpp:424:12
    #7 0x778286315640 in Halide::Internal::(anonymous namespace)::build_provide_loop_nest(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Halide::Internal::Function, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, Halide::Internal::Function>>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Internal::Function const&, Halide::Internal::Definition const&, int, bool) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/ScheduleFunctions.cpp:498:58
    #8 0x7782862d5ffd in Halide::Internal::(anonymous namespace)::InjectFunctionRealization::build_produce_definition(Halide::Internal::Function const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Internal::Definition const&, bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Halide::Expr, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, Halide::Expr>>>&, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Halide::Expr>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Halide::Expr>>>&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>>>&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/ScheduleFunctions.cpp:1568:24
    #9 0x7782862d5ffd in Halide::Internal::(anonymous namespace)::InjectFunctionRealization::build_pipeline_group(Halide::Internal::Stmt) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/ScheduleFunctions.cpp:1846:39
    #10 0x7782862c6ed6 in Halide::Internal::(anonymous namespace)::InjectFunctionRealization::visit(Halide::Internal::For const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/ScheduleFunctions.cpp:1301:20
    #11 0x778285ebfab2 in Halide::Internal::StmtNode<Halide::Internal::For>::mutate_stmt(Halide::Internal::IRMutator*) const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/IR.cpp:1360:15
    #12 0x77828607e400 in Halide::Internal::(anonymous namespace)::lower_impl(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&, Halide::Module&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Lower.cpp:183:14
    #13 0x77828607d5b8 in Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0::operator()() const /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Lower.cpp:629:9
    #14 0x77828607d5b8 in void std::__invoke_impl<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>(std::__invoke_other, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14
    #15 0x77828607d5b8 in std::enable_if<is_invocable_r_v<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>, void>::type std::__invoke_r<void, Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&>(Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2
    #16 0x77828607d5b8 in std::_Function_handler<void (), Halide::Internal::lower(std::vector<Halide::Internal::Function, std::allocator<Halide::Internal::Function>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, Halide::LinkageType, std::vector<Halide::Internal::Stmt, std::allocator<Halide::Internal::Stmt>> const&, bool, std::vector<Halide::Internal::IRMutator*, std::allocator<Halide::Internal::IRMutator*>> const&)::$_0>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9
    #17 0x7782861c0c00 in Halide::Pipeline::compile_to_module(std::vector<Halide::Argument, std::allocator<Halide::Argument>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Target const&, Halide::LinkageType) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:558:28
    #18 0x7782861c7f5c in Halide::Pipeline::compile_jit(Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:633:21
    #19 0x7782861ce1b5 in Halide::Pipeline::realize(Halide::JITUserContext*, std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:777:5
    #20 0x7782861cdc07 in Halide::Pipeline::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:759:12
    #21 0x778285c3fe77 in Halide::Func::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Func.cpp:3399:23
    #22 0x6158406008d6 in main /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/test/correctness/bad_partition_always_throws.cpp:14:11
    #23 0x778281229d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

Indirect leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x6158405fef6d in operator new(unsigned long) /home/halidenightly/build_bot/worker/llvm-main-x86-64-linux/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
    #1 0x7782861888d2 in std::__new_allocator<Halide::BufferConstraint>::allocate(unsigned long, void const*) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/new_allocator.h:137:27
    #2 0x7782861888d2 in std::allocator_traits<std::allocator<Halide::BufferConstraint>>::allocate(std::allocator<Halide::BufferConstraint>&, unsigned long) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/alloc_traits.h:464:20
    #3 0x7782861888d2 in std::_Vector_base<Halide::BufferConstraint, std::allocator<Halide::BufferConstraint>>::_M_allocate(unsigned long) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_vector.h:378:20
    #4 0x7782861888d2 in std::_Vector_base<Halide::BufferConstraint, std::allocator<Halide::BufferConstraint>>::_M_create_storage(unsigned long) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_vector.h:395:33
    #5 0x7782861888d2 in std::_Vector_base<Halide::BufferConstraint, std::allocator<Halide::BufferConstraint>>::_Vector_base(unsigned long, std::allocator<Halide::BufferConstraint> const&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_vector.h:332:9
    #6 0x7782861888d2 in std::vector<Halide::BufferConstraint, std::allocator<Halide::BufferConstraint>>::vector(unsigned long, std::allocator<Halide::BufferConstraint> const&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_vector.h:552:9
    #7 0x7782861888d2 in Halide::Internal::ParameterContents::ParameterContents(Halide::Type, bool, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Parameter.cpp:27:38
    #8 0x778286180ab9 in Halide::Parameter::Parameter(Halide::Type const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, Halide::Buffer<void, -1> const&, int, std::vector<Halide::BufferConstraint, std::allocator<Halide::BufferConstraint>> const&, Halide::MemoryType) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Parameter.cpp:88:20

Indirect leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x6158405fef6d in operator new(unsigned long) /home/halidenightly/build_bot/worker/llvm-main-x86-64-linux/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
    #1 0x778285b301dd in Halide::Internal::IntImm::make(Halide::Type, long) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Expr.cpp:21:20
    #2 0x778285a778e4 in Halide::Internal::Deserializer::deserialize_expr(Halide::Serialize::Expr, void const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Deserialization.cpp:679:16
    #3 0x778285a9abe9 in Halide::Internal::Deserializer::deserialize_buffer_constraint(Halide::Serialize::BufferConstraint const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Deserialization.cpp:1210:25
    #4 0x778285ac6470 in Halide::BufferConstraint std::__invoke_impl<Halide::BufferConstraint, Halide::BufferConstraint (Halide::Internal::Deserializer::*&)(Halide::Serialize::BufferConstraint const*), Halide::Internal::Deserializer&, Halide::Serialize::BufferConstraint const*>(std::__invoke_memfun_ref, Halide::BufferConstraint (Halide::Internal::Deserializer::*&)(Halide::Serialize::BufferConstraint const*), Halide::Internal::Deserializer&, Halide::Serialize::BufferConstraint const*&&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:67:14
    #5 0x778285ac6470 in std::enable_if<is_invocable_r_v<Halide::BufferConstraint, Halide::BufferConstraint (Halide::Internal::Deserializer::*&)(Halide::Serialize::BufferConstraint const*), Halide::Internal::Deserializer&, Halide::Serialize::BufferConstraint const*>, Halide::BufferConstraint>::type std::__invoke_r<Halide::BufferConstraint, Halide::BufferConstraint (Halide::Internal::Deserializer::*&)(Halide::Serialize::BufferConstraint const*), Halide::Internal::Deserializer&, Halide::Serialize::BufferConstraint const*>(Halide::BufferConstraint (Halide::Internal::Deserializer::*&)(Halide::Serialize::BufferConstraint const*), Halide::Internal::Deserializer&, Halide::Serialize::BufferConstraint const*&&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:114:9
    #6 0x778285ac6470 in std::_Function_handler<Halide::BufferConstraint (Halide::Internal::Deserializer&, Halide::Serialize::BufferConstraint const*), Halide::BufferConstraint (Halide::Internal::Deserializer::*)(Halide::Serialize::BufferConstraint const*)>::_M_invoke(std::_Any_data const&, Halide::Internal::Deserializer&, Halide::Serialize::BufferConstraint const*&&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9
    #7 0x778285a9c180 in Halide::Internal::Deserializer::deserialize_parameter(Halide::Serialize::Parameter const*) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Deserialization.cpp:1234:13
    #8 0x778285ad0f10 in Halide::Parameter std::__invoke_impl<Halide::Parameter, Halide::Parameter (Halide::Internal::Deserializer::*&)(Halide::Serialize::Parameter const*), Halide::Internal::Deserializer&, Halide::Serialize::Parameter const*>(std::__invoke_memfun_ref, Halide::Parameter (Halide::Internal::Deserializer::*&)(Halide::Serialize::Parameter const*), Halide::Internal::Deserializer&, Halide::Serialize::Parameter const*&&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:67:14
    #9 0x778285ad0f10 in std::enable_if<is_invocable_r_v<Halide::Parameter, Halide::Parameter (Halide::Internal::Deserializer::*&)(Halide::Serialize::Parameter const*), Halide::Internal::Deserializer&, Halide::Serialize::Parameter const*>, Halide::Parameter>::type std::__invoke_r<Halide::Parameter, Halide::Parameter (Halide::Internal::Deserializer::*&)(Halide::Serialize::Parameter const*), Halide::Internal::Deserializer&, Halide::Serialize::Parameter const*>(Halide::Parameter (Halide::Internal::Deserializer::*&)(Halide::Serialize::Parameter const*), Halide::Internal::Deserializer&, Halide::Serialize::Parameter const*&&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:114:9
    #10 0x778285ad0f10 in std::_Function_handler<Halide::Parameter (Halide::Internal::Deserializer&, Halide::Serialize::Parameter const*), Halide::Parameter (Halide::Internal::Deserializer::*)(Halide::Serialize::Parameter const*)>::_M_invoke(std::_Any_data const&, Halide::Internal::Deserializer&, Halide::Serialize::Parameter const*&&) /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9
    #11 0x778285aa27c9 in Halide::Internal::Deserializer::deserialize(std::vector<unsigned char, std::allocator<unsigned char>> const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Deserialization.cpp:1455:9
    #12 0x778285aa6e64 in Halide::deserialize_pipeline(std::vector<unsigned char, std::allocator<unsigned char>> const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Halide::Parameter, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, Halide::Parameter>>> const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Deserialization.cpp:1561:25
    #13 0x7782861c7453 in Halide::Pipeline::compile_jit(Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:607:34
    #14 0x7782861ce1b5 in Halide::Pipeline::realize(Halide::JITUserContext*, std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:777:5
    #15 0x7782861cdc07 in Halide::Pipeline::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Pipeline.cpp:759:12
    #16 0x778285c3fe77 in Halide::Func::realize(std::vector<int, std::allocator<int>>, Halide::Target const&) /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/src/Func.cpp:3399:23
    #17 0x6158406008d6 in main /home/halidenightly/build_bot/worker/halide-asan-testbranch-main-llvm_main-x86-64-linux-cmake/halide-source/test/correctness/bad_partition_always_throws.cpp:14:11
    #18 0x778281229d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16

SUMMARY: AddressSanitizer: 944 byte(s) leaked in 12 allocation(s).

@mcourteaux
Copy link
Contributor

mcourteaux commented Aug 20, 2025

I wonder if this is a consequence of throwing in a destructor?

It doesn't sound all that crazy that the compiler just gives up on cleanup and calling destructors if a new exception is thrown. You'd get an explosion of combinations of cleanup code where stuff can break if the destructors start throwing too...

Although I would argue that this is indeed a desirable feature in this simple scenario. Jai's #defer beats this.

@mcourteaux
Copy link
Contributor

I suggest wrapping the actual mutation code in a helper function, and doing the error checking for the loop partition mutation manually outside that wrapper, without relying on a destructor.

@alexreinking
Copy link
Member Author

Jai's #defer beats this.

Same with Zig, which is a language that actually, y'know, exists 😉

I suggest wrapping the actual mutation code in a helper function, and doing the error checking for the loop partition mutation manually outside that wrapper, without relying on a destructor.

I'd be more comfortable making a large refactoring if I could tell that it actually fixed the problem. I can't reproduce the issue locally yet.

@abadams
Copy link
Member

abadams commented Aug 20, 2025

It claims a For node is leaked. The exception is thrown inside a For IRMutator method. Seems like this is probably real. Maybe there's UB here so it's not a guaranteed leak and that's why you can't repro locally?

@abadams
Copy link
Member

abadams commented Aug 20, 2025

+1 to Martijn's suggestion, which I think amounts to renaming this method visit_for, having it additionally return if partitioning happened, and doing the checking in visit(const For *). Doing it blind and seeing if it appeases the buildbot sucks but might be the fastest option.

@alexreinking alexreinking changed the title Add missing noexcept(false) to PartitionLoops.cpp Avoid throwing from a destructor in PartitionLoops.cpp Aug 21, 2025
@alexreinking alexreinking force-pushed the bugfix/partition-loops branch from 57a4f8a to 69afa21 Compare August 22, 2025 03:20
@mcourteaux
Copy link
Contributor

mcourteaux commented Aug 22, 2025

The new Error-marco with for-loop trick didn't fix this problem?

@alexreinking
Copy link
Member Author

The new Error-marco with for-loop trick didn't fix this problem?

Unfortunately, no. Seems like the problem runs deeper. I'm going to build Halide using LLVM main and see if that reproduces the issue.

@alexreinking
Copy link
Member Author

I built the test on macOS using LLVM 22 (main) and its ASAN-enabled runtime. I only see perfectly spurious leaks (see details below). I'm at a loss as to why leaks are being detected here...

Details
Success!

=================================================================
==56184==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x000102a3fa34 in malloc sanitizer_malloc_mac.inc:137
    #1 0x000195487a80 in _malloc_type_malloc_outlined+0x60 (libsystem_malloc.dylib:arm64+0x1da80)
    #2 0x00019527aae4 in _fetchInitializingClassList(bool)+0x34 (libobjc.A.dylib:arm64+0xaae4)
    #3 0x00019527a99c in _setThisThreadIsInitializingClass(objc_class*)+0x1c (libobjc.A.dylib:arm64+0xa99c)
    #4 0x00019527a7bc in initializeNonMetaClass+0x258 (libobjc.A.dylib:arm64+0xa7bc)
    #5 0x00019527a5fc in initializeNonMetaClass+0x98 (libobjc.A.dylib:arm64+0xa5fc)
    #6 0x00019527a5fc in initializeNonMetaClass+0x98 (libobjc.A.dylib:arm64+0xa5fc)
    #7 0x00019527a5fc in initializeNonMetaClass+0x98 (libobjc.A.dylib:arm64+0xa5fc)
    #8 0x000195296a60 in initializeAndMaybeRelock(objc_class*, objc_object*, locker_mixin<lockdebug::lock_mixin<objc_lock_base_t>>&, bool)+0xac (libobjc.A.dylib:arm64+0x26a60)
    #9 0x000195279f88 in lookUpImpOrForward+0x120 (libobjc.A.dylib:arm64+0x9f88)
    #10 0x000195279b80 in _objc_msgSend_uncached+0x40 (libobjc.A.dylib:arm64+0x9b80)
    #11 0x0001953663fc in _xpc_collect_images+0xc0 (libxpc.dylib:arm64+0x23fc)
    #12 0x000195365868 in _libxpc_initializer+0x440 (libxpc.dylib:arm64+0x1868)
    #13 0x0001a38ae310 in libSystem_initializer+0xfc (libSystem.B.dylib:arm64+0x1310)
    #14 0x0001952e6ef8 in invocation function for block in dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const+0x1b8 (dyld:arm64+0xfffffffffff56ef8)
    #15 0x000195323860  (<unknown module>)
    #16 0x000195343588  (<unknown module>)
    #17 0x000195340314  (<unknown module>)
    #18 0x000195341a54  (<unknown module>)
    #19 0x000195323330  (<unknown module>)
    #20 0x0001952e6cb0 in dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const+0xac (dyld:arm64+0xfffffffffff56cb0)
    #21 0x0001952f252c  (<unknown module>)
    #22 0x0001953088ac  (<unknown module>)
    #23 0x0001952cbdfc in dyld4::prepare(dyld4::APIs&, mach_o::Header const*)+0xc10 (dyld:arm64+0xfffffffffff3bdfc)
    #24 0x0001952cb1d4 in dyld4::start(dyld4::KernelArgs*, void*, void*)::$_0::operator()() const+0xe8 (dyld:arm64+0xfffffffffff3b1d4)
    #25 0x0001952cab48 in start+0x176c (dyld:arm64+0xfffffffffff3ab48)

Direct leak of 16 byte(s) in 1 object(s) allocated from:
    #0 0x000102a3fd08 in calloc sanitizer_malloc_mac.inc:171
    #1 0x000195487af8 in _malloc_type_calloc_outlined+0x64 (libsystem_malloc.dylib:arm64+0x1daf8)
    #2 0x000195674c74 in dyld::ThreadLocalVariables::instantiateVariable(dyld::ThreadLocalVariables::Thunk const&)+0x5c (libdyld.dylib:arm64+0x3c74)
    #3 0x00019567415c in _tlv_get_addr+0x64 (libdyld.dylib:arm64+0x315c)
    #4 0x00010238047c in __cxa_get_globals cxa_exception_storage.cpp:38
    #5 0x000102384980 in __cxa_throw cxa_exception.cpp:281
    #6 0x00010e03c6f4 in void Halide::Internal::(anonymous namespace)::throw_error_common<Halide::CompileError>(Halide::CompileError const&)+0x48 (libHalide.20.0.0.dylib:arm64+0x74c6f4)
    #7 0x00010e03c6a8 in Halide::Internal::throw_error(Halide::CompileError const&)+0x18 (libHalide.20.0.0.dylib:arm64+0x74c6a8)
    #8 0x00010d90537c in Halide::Internal::ErrorReport<Halide::CompileError>::issue()+0xf0 (libHalide.20.0.0.dylib:arm64+0x1537c)
    #9 0x00010e5f9fdc in Halide::Internal::(anonymous namespace)::PartitionLoops::visit(Halide::Internal::For const*)+0x368 (libHalide.20.0.0.dylib:arm64+0xd09fdc)
    #10 0x00010e5f2530 in Halide::Internal::partition_loops(Halide::Internal::Stmt)::Mutator::visit(Halide::Internal::For const*)+0x290 (libHalide.20.0.0.dylib:arm64+0xd02530)
    #11 0x00010e3c14c8 in Halide::Internal::IRMutator::visit(Halide::Internal::ProducerConsumer const*)+0xfc (libHalide.20.0.0.dylib:arm64+0xad14c8)
    #12 0x00010e3c5e78 in Halide::Internal::IRMutator::visit(Halide::Internal::Block const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad5e78)
    #13 0x00010e3c5e78 in Halide::Internal::IRMutator::visit(Halide::Internal::Block const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad5e78)
    #14 0x00010e3c5e78 in Halide::Internal::IRMutator::visit(Halide::Internal::Block const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad5e78)
    #15 0x00010e3c5e78 in Halide::Internal::IRMutator::visit(Halide::Internal::Block const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad5e78)
    #16 0x00010e3c5e78 in Halide::Internal::IRMutator::visit(Halide::Internal::Block const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad5e78)
    #17 0x00010e3c5e78 in Halide::Internal::IRMutator::visit(Halide::Internal::Block const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad5e78)
    #18 0x00010e3c5e78 in Halide::Internal::IRMutator::visit(Halide::Internal::Block const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad5e78)
    #19 0x00010e3c65a8 in Halide::Internal::IRMutator::visit(Halide::Internal::IfThenElse const*)+0x150 (libHalide.20.0.0.dylib:arm64+0xad65a8)
    #20 0x00010e3c5e78 in Halide::Internal::IRMutator::visit(Halide::Internal::Block const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad5e78)
    #21 0x00010e3c06c0 in Halide::Internal::IRMutator::visit(Halide::Internal::LetStmt const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad06c0)
    #22 0x00010e3c06c0 in Halide::Internal::IRMutator::visit(Halide::Internal::LetStmt const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad06c0)
    #23 0x00010e3c06c0 in Halide::Internal::IRMutator::visit(Halide::Internal::LetStmt const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad06c0)
    #24 0x00010e3c06c0 in Halide::Internal::IRMutator::visit(Halide::Internal::LetStmt const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad06c0)
    #25 0x00010e3c06c0 in Halide::Internal::IRMutator::visit(Halide::Internal::LetStmt const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad06c0)
    #26 0x00010e3c06c0 in Halide::Internal::IRMutator::visit(Halide::Internal::LetStmt const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad06c0)
    #27 0x00010e3c06c0 in Halide::Internal::IRMutator::visit(Halide::Internal::LetStmt const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad06c0)
    #28 0x00010e3c5e78 in Halide::Internal::IRMutator::visit(Halide::Internal::Block const*)+0x148 (libHalide.20.0.0.dylib:arm64+0xad5e78)
    #29 0x00010e5f131c in Halide::Internal::partition_loops(Halide::Internal::Stmt)+0x1a4 (libHalide.20.0.0.dylib:arm64+0xd0131c)

Indirect leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x000102a3fd08 in calloc sanitizer_malloc_mac.inc:171
    #1 0x000195487af8 in _malloc_type_calloc_outlined+0x64 (libsystem_malloc.dylib:arm64+0x1daf8)
    #2 0x00019527ab60 in _fetchInitializingClassList(bool)+0xb0 (libobjc.A.dylib:arm64+0xab60)
    #3 0x00019527a99c in _setThisThreadIsInitializingClass(objc_class*)+0x1c (libobjc.A.dylib:arm64+0xa99c)
    #4 0x00019527a7bc in initializeNonMetaClass+0x258 (libobjc.A.dylib:arm64+0xa7bc)
    #5 0x00019527a5fc in initializeNonMetaClass+0x98 (libobjc.A.dylib:arm64+0xa5fc)
    #6 0x00019527a5fc in initializeNonMetaClass+0x98 (libobjc.A.dylib:arm64+0xa5fc)
    #7 0x00019527a5fc in initializeNonMetaClass+0x98 (libobjc.A.dylib:arm64+0xa5fc)
    #8 0x000195296a60 in initializeAndMaybeRelock(objc_class*, objc_object*, locker_mixin<lockdebug::lock_mixin<objc_lock_base_t>>&, bool)+0xac (libobjc.A.dylib:arm64+0x26a60)
    #9 0x000195279f88 in lookUpImpOrForward+0x120 (libobjc.A.dylib:arm64+0x9f88)
    #10 0x000195279b80 in _objc_msgSend_uncached+0x40 (libobjc.A.dylib:arm64+0x9b80)
    #11 0x0001953663fc in _xpc_collect_images+0xc0 (libxpc.dylib:arm64+0x23fc)
    #12 0x000195365868 in _libxpc_initializer+0x440 (libxpc.dylib:arm64+0x1868)
    #13 0x0001a38ae310 in libSystem_initializer+0xfc (libSystem.B.dylib:arm64+0x1310)
    #14 0x0001952e6ef8 in invocation function for block in dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const+0x1b8 (dyld:arm64+0xfffffffffff56ef8)
    #15 0x000195323860  (<unknown module>)
    #16 0x000195343588  (<unknown module>)
    #17 0x000195340314  (<unknown module>)
    #18 0x000195341a54  (<unknown module>)
    #19 0x000195323330  (<unknown module>)
    #20 0x0001952e6cb0 in dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const+0xac (dyld:arm64+0xfffffffffff56cb0)
    #21 0x0001952f252c  (<unknown module>)
    #22 0x0001953088ac  (<unknown module>)
    #23 0x0001952cbdfc in dyld4::prepare(dyld4::APIs&, mach_o::Header const*)+0xc10 (dyld:arm64+0xfffffffffff3bdfc)
    #24 0x0001952cb1d4 in dyld4::start(dyld4::KernelArgs*, void*, void*)::$_0::operator()() const+0xe8 (dyld:arm64+0xfffffffffff3b1d4)
    #25 0x0001952cab48 in start+0x176c (dyld:arm64+0xfffffffffff3ab48)

Indirect leak of 16 byte(s) in 1 object(s) allocated from:
    #0 0x000102a3fd08 in calloc sanitizer_malloc_mac.inc:171
    #1 0x000195487af8 in _malloc_type_calloc_outlined+0x64 (libsystem_malloc.dylib:arm64+0x1daf8)
    #2 0x00019527ab1c in _fetchInitializingClassList(bool)+0x6c (libobjc.A.dylib:arm64+0xab1c)
    #3 0x00019527a99c in _setThisThreadIsInitializingClass(objc_class*)+0x1c (libobjc.A.dylib:arm64+0xa99c)
    #4 0x00019527a7bc in initializeNonMetaClass+0x258 (libobjc.A.dylib:arm64+0xa7bc)
    #5 0x00019527a5fc in initializeNonMetaClass+0x98 (libobjc.A.dylib:arm64+0xa5fc)
    #6 0x00019527a5fc in initializeNonMetaClass+0x98 (libobjc.A.dylib:arm64+0xa5fc)
    #7 0x00019527a5fc in initializeNonMetaClass+0x98 (libobjc.A.dylib:arm64+0xa5fc)
    #8 0x000195296a60 in initializeAndMaybeRelock(objc_class*, objc_object*, locker_mixin<lockdebug::lock_mixin<objc_lock_base_t>>&, bool)+0xac (libobjc.A.dylib:arm64+0x26a60)
    #9 0x000195279f88 in lookUpImpOrForward+0x120 (libobjc.A.dylib:arm64+0x9f88)
    #10 0x000195279b80 in _objc_msgSend_uncached+0x40 (libobjc.A.dylib:arm64+0x9b80)
    #11 0x0001953663fc in _xpc_collect_images+0xc0 (libxpc.dylib:arm64+0x23fc)
    #12 0x000195365868 in _libxpc_initializer+0x440 (libxpc.dylib:arm64+0x1868)
    #13 0x0001a38ae310 in libSystem_initializer+0xfc (libSystem.B.dylib:arm64+0x1310)
    #14 0x0001952e6ef8 in invocation function for block in dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const+0x1b8 (dyld:arm64+0xfffffffffff56ef8)
    #15 0x000195323860  (<unknown module>)
    #16 0x000195343588  (<unknown module>)
    #17 0x000195340314  (<unknown module>)
    #18 0x000195341a54  (<unknown module>)
    #19 0x000195323330  (<unknown module>)
    #20 0x0001952e6cb0 in dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const+0xac (dyld:arm64+0xfffffffffff56cb0)
    #21 0x0001952f252c  (<unknown module>)
    #22 0x0001953088ac  (<unknown module>)
    #23 0x0001952cbdfc in dyld4::prepare(dyld4::APIs&, mach_o::Header const*)+0xc10 (dyld:arm64+0xfffffffffff3bdfc)
    #24 0x0001952cb1d4 in dyld4::start(dyld4::KernelArgs*, void*, void*)::$_0::operator()() const+0xe8 (dyld:arm64+0xfffffffffff3b1d4)
    #25 0x0001952cab48 in start+0x176c (dyld:arm64+0xfffffffffff3ab48)

SUMMARY: AddressSanitizer: 136 byte(s) leaked in 4 allocation(s).

@alexreinking
Copy link
Member Author

alexreinking commented Aug 22, 2025

It appears the test has started working again! I believe this to have been an LLVM main injection all along...

https://buildbot.halide-lang.org/master/#/builders/273/builds/60

However, it looks like we checked #8689 in with a failing test. The correctness_bounds_of_pure_intrinsics test never worked under ASAN as it requires too much stack space.

@mcourteaux
Copy link
Contributor

The correctness_bounds_of_pure_intrinsics test never worked under ASAN as it requires too much stack space.

Is this because of IRVisitor / IRMutator recursions going too deep? Can we increase stack size further?

@alexreinking
Copy link
Member Author

Is this because of IRVisitor / IRMutator recursions going too deep? Can we increase stack size further?

We normally do, but not on ASAN. There's explicit logic in there that disables run_on_large_stack.

@alexreinking
Copy link
Member Author

Failures are unrelated. The new correctness_math error appears to be an LLVM injection.

@alexreinking alexreinking merged commit d3ca7b2 into main Aug 23, 2025
9 of 19 checks passed
@alexreinking alexreinking deleted the bugfix/partition-loops branch August 23, 2025 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants