Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segfault when simplifing let exprs #7815

Closed
TH3CHARLie opened this issue Aug 28, 2023 · 0 comments · Fixed by #7816
Closed

Segfault when simplifing let exprs #7815

TH3CHARLie opened this issue Aug 28, 2023 · 0 comments · Fixed by #7816
Assignees
Labels

Comments

@TH3CHARLie
Copy link
Contributor

a simple repro:

    Func input("input");
    Func local_sum("local_sum");
    Func blurry("blurry");
    Var x("x"), y("y");
    input(x, y) = 2 * x + 5 * y;
    RDom r(-2, 5, -2, 5);
    local_sum(x, y) = 0;
    local_sum(x, y) += input(x + r.x, y + r.y);
    blurry(x, y) = cast<int32_t>(local_sum(x, y) / 25);

    Var yo("yo"), yi("yi"), yiyof("yiyof"), yiyofxf("yiyofxf");
    blurry.split(y, yo, yi, 4, TailStrategy::GuardWithIf).fuse(yi, yo, yiyof).parallel(yiyof).fuse(yiyof, x, yiyofxf);
    local_sum.split(y, yo, yi, 4, TailStrategy::PredicateStores);
    local_sum.update(0).unscheduled();
    Pipeline p({blurry});
    Buffer<int> buf = p.realize({32, 32});

backtrace:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff091e4a6 in Halide::Internal::Stmt Halide::Internal::Simplify::simplify_let<Halide::Internal::LetStmt, Halide::Internal::Stmt>(Halide::Internal::LetStmt const*, Halide::Internal::Simplify::ExprInfo*)
    () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
(gdb) bt
#0  0x00007ffff091e4a6 in Halide::Internal::Stmt Halide::Internal::Simplify::simplify_let<Halide::Internal::LetStmt, Halide::Internal::Stmt>(Halide::Internal::LetStmt const*, Halide::Internal::Simplify::ExprInfo*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#1  0x00007ffff091933b in Halide::Internal::Simplify::visit(Halide::Internal::LetStmt const*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#2  0x00007ffff08b31e4 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) ()
   from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#3  0x00007ffff09f526a in Halide::Internal::Simplify::visit(Halide::Internal::For const*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#4  0x00007ffff08b3202 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) ()
   from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#5  0x00007ffff09f77e0 in Halide::Internal::Simplify::visit(Halide::Internal::ProducerConsumer const*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#6  0x00007ffff08b31f8 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) ()
   from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#7  0x00007ffff09f7a08 in Halide::Internal::Simplify::visit(Halide::Internal::Block const*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#8  0x00007ffff08b3248 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) ()
   from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#9  0x00007ffff091e413 in Halide::Internal::Stmt Halide::Internal::Simplify::simplify_let<Halide::Internal::LetStmt, Halide::Internal::Stmt>(Halide::Internal::LetStmt const*, Halide::Internal::Simplify::ExprInfo*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#10 0x00007ffff091933b in Halide::Internal::Simplify::visit(Halide::Internal::LetStmt const*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#11 0x00007ffff08b31e4 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) ()
   from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#12 0x00007ffff09f7a08 in Halide::Internal::Simplify::visit(Halide::Internal::Block const*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#13 0x00007ffff08b3248 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) ()
   from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#14 0x00007ffff09f31c0 in Halide::Internal::Simplify::visit(Halide::Internal::IfThenElse const*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#15 0x00007ffff08b325f in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) ()
   from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#16 0x00007ffff09f7da0 in Halide::Internal::Simplify::visit(Halide::Internal::Block const*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#17 0x00007ffff08b3248 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) ()
   from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#18 0x00007ffff091e413 in Halide::Internal::Stmt Halide::Internal::Simplify::simplify_let<Halide::Internal::LetStmt, Halide::Internal::Stmt>(Halide::Internal::LetStmt const*, Halide::Internal::Simplify::ExprInfo*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#19 0x00007ffff091933b in Halide::Internal::Simplify::visit(Halide::Internal::LetStmt const*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#20 0x00007ffff08b31e4 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) ()
   from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#21 0x00007ffff09f7a08 in Halide::Internal::Simplify::visit(Halide::Internal::Block const*) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#22 0x00007ffff08b3248 in Halide::Internal::Stmt Halide::Internal::VariadicVisitor<Halide::Internal::Simplify, Halide::Expr, Halide::Internal::Stmt>::dispatch_stmt<>(Halide::Internal::BaseStmtNode const*) ()
   from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#23 0x00007ffff08b0367 in Halide::Internal::simplify(Halide::Internal::Stmt const&, bool, Halide::Internal::Scope<Halide::Internal::Interval> const&, Halide::Internal::Scope<Halide::Internal::ModulusRemainder> const&) () from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#24 0x00007ffff07aab42 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&) ()
   from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
#25 0x00007ffff07a7efb 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&) ()
   from /home/xuanda/dev/Serializer/Halide/build-clean/src/libHalide.so.17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants