-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Description
Google fuzz testing reports a fuzzer failure (stack overflow) in fuzz-cse. I suspect that (similar to another recent report) this is infeasible to fix, given that the Google fuzzer runs in only 128k of stack space. (Should we move the fuzzer tests to use run_with_large_stack)?
Traceback looks like this:
#4 0x59886e54b24a in Halide::Internal::ConstantInterval::is_bounded() const third_party/halide/halide/src/ConstantInterval.cpp:52:12
#5 0x59886f8d298a in Halide::Type::can_represent(Halide::Internal::ConstantInterval const&) const third_party/halide/halide/src/Type.cpp:131:15
#6 0x59886e55018d in Halide::Internal::ConstantInterval::cast_to(Halide::Type const&) third_party/halide/halide/src/ConstantInterval.cpp:207:12
#7 0x59886e5505f2 in cast third_party/halide/halide/src/ConstantInterval.cpp:665:12
#8 0x59886e5505f2 in Halide::Internal::ConstantInterval::bounds_of_type(Halide::Type) third_party/halide/halide/src/ConstantInterval.cpp:245:12
#9 0x59886f1fc29b in Halide::Internal::Simplify::visit(Halide::Internal::Variable const*, Halide::Internal::Simplify::ExprInfo*) third_party/halide/halide/src/Simplify_Exprs.cpp:221:24
#10 0x59886f087769 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*&) third_party/halide/halide/src/IRVisitor.h:184:33
#11 0x59886f215f16 in dispatch<Halide::Internal::Simplify::ExprInfo *&> third_party/halide/halide/src/IRVisitor.h:346:16
#12 0x59886f215f16 in mutate third_party/halide/halide/src/Simplify_Internal.h:175:23
#13 0x59886f215f16 in Halide::Internal::Simplify::visit(Halide::Internal::LT const*, Halide::Internal::Simplify::ExprInfo*) third_party/halide/halide/src/Simplify_LT.cpp:8:14
#14 0x59886f0877fe 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*&) third_party/halide/halide/src/IRVisitor.h:204:33
#15 0x59886f2e1c22 in dispatch<Halide::Internal::Simplify::ExprInfo *&> third_party/halide/halide/src/IRVisitor.h:346:16
#16 0x59886f2e1c22 in mutate third_party/halide/halide/src/Simplify_Internal.h:175:23
(etc)
Original randomly-generated Expr looks like this:
orig: (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))))) in (let z = (let z = (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))))) in (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))))))) in (let z = (let z = (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))))) in (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))))))) in (let z = (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))))) in (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))) in (let z = (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x))) in (let z = select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x) in ((int16)x + select(select((int16)1 > (int16)-4, (int16)4, (int16)-3) > z, select((int16)1 > (int16)-4, (int16)4, (int16)-3), (int16)x)))))))))))
Post-CSE expr looks like this:
csed: (let t0 = select((int16)1 > (int16)-4, (int16)4, (int16)-3) in ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > ((int16)x + select(t0 > select(t0 > (int16)z, t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)), t0, (int16)x), t0, (int16)x)))
Metadata
Metadata
Assignees
Labels
No labels