Skip to content

ASAN reports signed-integer-overflow in correctness_intrinsics and correctness_code_explosion #7229

@steven-johnson

Description

@steven-johnson

(Not sure if we care a lot about this particular instance, but would be nice to be able to run clean under ASAN)

Running third_party/halide/halide/test/correctness_intrinsics_impl expect=success with HL_TARGET=host with HL_JIT_TARGET=host
third_party/halide/halide/test/correctness/intrinsics.cpp:44:51: runtime error: signed integer overflow: 2214592511 * 4227858431 cannot be represented in type 'int64_t' (aka 'long')
    #0 0x55e6091f33dd in mul_shift_right<unsigned int> third_party/halide/halide/test/correctness/intrinsics.cpp:44:51
    #1 0x55e6091f33dd in void check_intrinsics_over_range<unsigned int>() third_party/halide/halide/test/correctness/intrinsics.cpp:89:63
    #2 0x55e6091e5519 in main third_party/halide/halide/test/correctness/intrinsics.cpp:322:5
    #3 0x7f8832253632 in __libc_start_main (/usr/grte/v5/lib64/libc.so.6+0x61632) (BuildId: 280088eab084c30a3992a9bce5c35b44)
    #4 0x55e6090eda29 in _start /build/work/ab393f4ac612f9027aae6b1a7226027ba2a2/google3/blaze-out/k8-opt/bin/third_party/grte/v5_src/grte-scratch/BUILD/src/csu/../sysdeps/x86_64/start.S:120

SUMMARY: UndefinedBehaviorSanitizer: signed-integer-overflow third_party/halide/halide/test/correctness/intrinsics.cpp:44:51 

and also

Running third_party/halide/halide/test/correctness_code_explosion_impl expect=success with HL_TARGET=host with HL_JIT_TARGET=host
third_party/halide/halide/src/Monotonic.cpp:108:28: runtime error: signed integer overflow: 7540113804746346429 + 4660046610375530309 cannot be represented in type 'int64_t' (aka 'long')
    #0 0x555fc1829b4e in Halide::Internal::(anonymous namespace)::add(Halide::Internal::ConstantInterval const&, Halide::Internal::ConstantInterval const&) third_party/halide/halide/src/Monotonic.cpp:108:28
    #1 0x555fc1823eb2 in Halide::Internal::(anonymous namespace)::DerivativeBounds::visit(Halide::Internal::Add const*) third_party/halide/halide/src/Monotonic.cpp:281:18
    #2 0x555fc1823e1c in accept third_party/halide/halide/src/Expr.h:192:14
    #3 0x555fc1823e1c in Halide::Internal::(anonymous namespace)::DerivativeBounds::visit(Halide::Internal::Add const*) third_party/halide/halide/src/Monotonic.cpp:277:15
    #4 0x555fc181a0ac in accept third_party/halide/halide/src/Expr.h:192:14
    #5 0x555fc181a0ac in Halide::Internal::derivative_bounds(Halide::Expr const&, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char>> const&, Halide::Internal::Scope<Halide::Internal::ConstantInterval> const&) third_party/halide/halide/src/Monotonic.cpp:639:41
    #6 0x555fc19c61c8 in Frame third_party/halide/halide/src/SimplifyCorrelatedDifferences.cpp:90:44
    #7 0x555fc19c61c8 in construct<Frame, const Halide::Internal::Let *&, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char> > &, Halide::Internal::Scope<Halide::Internal::ConstantInterval> &> third_party/crosstool/v18/stable/toolchain/bin/../include/c++/v1/__memory/allocator.h:165:28
    #8 0x555fc19c61c8 in construct<Frame, const Halide::Internal::Let *&, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char> > &, Halide::Internal::Scope<Halide::Internal::ConstantInterval> &, void> third_party/crosstool/v18/stable/toolchain/bin/../include/c++/v1/__memory/allocator_traits.h:289:13
    #9 0x555fc19c61c8 in __construct_one_at_end<const Halide::Internal::Let *&, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char> > &, Halide::Internal::Scope<Halide::Internal::ConstantInterval> &> third_party/crosstool/v18/stable/toolchain/bin/../include/c++/v1/vector:800:5
    #10 0x555fc19c61c8 in emplace_back<const Halide::Internal::Let *&, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char> > &, Halide::Internal::Scope<Halide::Internal::ConstantInterval> &> third_party/crosstool/v18/stable/toolchain/bin/../include/c++/v1/vector:1565:9
    #11 0x555fc19c61c8 in visit_let<Halide::Internal::Let, Halide::Expr> third_party/halide/halide/src/SimplifyCorrelatedDifferences.cpp:119:24
    #12 0x555fc19c61c8 in Halide::Internal::(anonymous namespace)::SimplifyCorrelatedDifferences::visit(Halide::Internal::Let const*) third_party/halide/halide/src/SimplifyCorrelatedDifferences.cpp:149:16
    #13 0x555fc12d2e10 in Halide::Internal::ExprNode<Halide::Internal::Let>::mutate_expr(Halide::Internal::IRMutator*) const third_party/halide/halide/src/IR.cpp:1298:15
    #14 0x555fc12eb842 in Halide::Internal::IRMutator::mutate(Halide::Expr const&) third_party/halide/halide/src/IRMutator.cpp:9:35
    #15 0x555fc12f2287 in Halide::Internal::IRMutator::mutate_with_changes(std::__u::vector<Halide::Expr, std::__u::allocator<Halide::Expr>> const&) third_party/halide/halide/src/IRMutator.cpp:398:22
    #16 0x555fc12f3f26 in Halide::Internal::IRMutator::visit(Halide::Internal::Provide const*) third_party/halide/halide/src/IRMutator.cpp:229:41
    #17 0x555fc12d2f90 in Halide::Internal::StmtNode<Halide::Internal::Provide>::mutate_stmt(Halide::Internal::IRMutator*) const third_party/halide/halide/src/IR.cpp:1323:15
    #18 0x555fc12eb892 in Halide::Internal::IRMutator::mutate(Halide::Internal::Stmt const&) third_party/halide/halide/src/IRMutator.cpp:13:35
    #19 0x555fc12f348b in Halide::Internal::IRMutator::visit(Halide::Internal::For const*) third_party/halide/halide/src/IRMutator.cpp:206:17
    #20 0x555fc19c8a78 in Halide::Internal::(anonymous namespace)::SimplifyCorrelatedDifferences::visit(Halide::Internal::For const*) third_party/halide/halide/src/SimplifyCorrelatedDifferences.cpp:167:32
    #21 0x555fc12d2f10 in Halide::Internal::StmtNode<Halide::Internal::For>::mutate_stmt(Halide::Internal::IRMutator*) const third_party/halide/halide/src/IR.cpp:1315:15
    #22 0x555fc12eb892 in Halide::Internal::IRMutator::mutate(Halide::Internal::Stmt const&) third_party/halide/halide/src/IRMutator.cpp:13:35
    #23 0x555fc19c7db2 in visit_let<Halide::Internal::LetStmt, Halide::Internal::Stmt> third_party/halide/halide/src/SimplifyCorrelatedDifferences.cpp:132:18
    #24 0x555fc19c7db2 in Halide::Internal::(anonymous namespace)::SimplifyCorrelatedDifferences::visit(Halide::Internal::LetStmt const*) third_party/halide/halide/src/SimplifyCorrelatedDifferences.cpp:153:16
    #25 0x555fc12d2e50 in Halide::Internal::StmtNode<Halide::Internal::LetStmt>::mutate_stmt(Halide::Internal::IRMutator*) const third_party/halide/halide/src/IR.cpp:1303:15
    #26 0x555fc12eb892 in Halide::Internal::IRMutator::mutate(Halide::Internal::Stmt const&) third_party/halide/halide/src/IRMutator.cpp:13:35
    #27 0x555fc12f30f0 in Halide::Internal::IRMutator::visit(Halide::Internal::ProducerConsumer const*) third_party/halide/halide/src/IRMutator.cpp:196:17
    #28 0x555fc12d2ed0 in Halide::Internal::StmtNode<Halide::Internal::ProducerConsumer>::mutate_stmt(Halide::Internal::IRMutator*) const third_party/halide/halide/src/IR.cpp:1311:15
    #29 0x555fc12eb892 in Halide::Internal::IRMutator::mutate(Halide::Internal::Stmt const&) third_party/halide/halide/src/IRMutator.cpp:13:35
    #30 0x555fc12f58cf in Halide::Internal::IRMutator::visit(Halide::Internal::Block const*) third_party/halide/halide/src/IRMutator.cpp:294:17
    #31 0x555fc12d3090 in Halide::Internal::StmtNode<Halide::Internal::Block>::mutate_stmt(Halide::Internal::IRMutator*) const third_party/halide/halide/src/IR.cpp:1339:15
    #32 0x555fc12eb892 in Halide::Internal::IRMutator::mutate(Halide::Internal::Stmt const&) third_party/halide/halide/src/IRMutator.cpp:13:35
    #33 0x555fc19c7db2 in visit_let<Halide::Internal::LetStmt, Halide::Internal::Stmt> third_party/halide/halide/src/SimplifyCorrelatedDifferences.cpp:132:18
    #34 0x555fc19c7db2 in Halide::Internal::(anonymous namespace)::SimplifyCorrelatedDifferences::visit(Halide::Internal::LetStmt const*) third_party/halide/halide/src/SimplifyCorrelatedDifferences.cpp:153:16
    #35 0x555fc12d2e50 in Halide::Internal::StmtNode<Halide::Internal::LetStmt>::mutate_stmt(Halide::Internal::IRMutator*) const third_party/halide/halide/src/IR.cpp:1303:15
    #36 0x555fc12eb892 in Halide::Internal::IRMutator::mutate(Halide::Internal::Stmt const&) third_party/halide/halide/src/IRMutator.cpp:13:35
    #37 0x555fc19c371d in Halide::Internal::simplify_correlated_differences(Halide::Internal::Stmt const&) third_party/halide/halide/src/SimplifyCorrelatedDifferences.cpp:285:44
    #38 0x555fc1743117 in Halide::Internal::(anonymous namespace)::lower_impl(std::__u::vector<Halide::Internal::Function, std::__u::allocator<Halide::Internal::Function>> const&, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char>> const&, Halide::Target const&, std::__u::vector<Halide::Argument, std::__u::allocator<Halide::Argument>> const&, Halide::LinkageType, std::__u::vector<Halide::Internal::Stmt, std::__u::allocator<Halide::Internal::Stmt>> const&, bool, std::__u::vector<Halide::Internal::IRMutator*, std::__u::allocator<Halide::Internal::IRMutator*>> const&, Halide::Module&) third_party/halide/halide/src/Lower.cpp:241:9
    #39 0x555fc1741725 in operator() third_party/halide/halide/src/Lower.cpp:725:9
    #40 0x555fc1741725 in __invoke<(lambda at third_party/halide/halide/src/Lower.cpp:724:26) &> third_party/crosstool/v18/stable/toolchain/bin/../include/c++/v1/__functional/invoke.h:394:23
    #41 0x555fc1741725 in __call<(lambda at third_party/halide/halide/src/Lower.cpp:724:26) &> third_party/crosstool/v18/stable/toolchain/bin/../include/c++/v1/__functional/invoke.h:479:9
    #42 0x555fc1741725 in operator() third_party/crosstool/v18/stable/toolchain/bin/../include/c++/v1/__functional/function.h:231:12
    #43 0x555fc1741725 in void std::__u::__function::__policy_invoker<void ()>::__call_impl<std::__u::__function::__default_alloc_func<Halide::Internal::lower(std::__u::vector<Halide::Internal::Function, std::__u::allocator<Halide::Internal::Function>> const&, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char>> const&, Halide::Target const&, std::__u::vector<Halide::Argument, std::__u::allocator<Halide::Argument>> const&, Halide::LinkageType, std::__u::vector<Halide::Internal::Stmt, std::__u::allocator<Halide::Internal::Stmt>> const&, bool, std::__u::vector<Halide::Internal::IRMutator*, std::__u::allocator<Halide::Internal::IRMutator*>> const&)::$_0, void ()>>(std::__u::__function::__policy_storage const*) third_party/crosstool/v18/stable/toolchain/bin/../include/c++/v1/__functional/function.h:710:16
    #44 0x555fc1741000 in Halide::Internal::lower(std::__u::vector<Halide::Internal::Function, std::__u::allocator<Halide::Internal::Function>> const&, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char>> const&, Halide::Target const&, std::__u::vector<Halide::Argument, std::__u::allocator<Halide::Argument>> const&, Halide::LinkageType, std::__u::vector<Halide::Internal::Stmt, std::__u::allocator<Halide::Internal::Stmt>> const&, bool, std::__u::vector<Halide::Internal::IRMutator*, std::__u::allocator<Halide::Internal::IRMutator*>> const&) third_party/halide/halide/src/Lower.cpp:724:5
    #45 0x555fc1724e0f in Halide::Pipeline::compile_to_module(std::__u::vector<Halide::Argument, std::__u::allocator<Halide::Argument>> const&, std::__u::basic_string<char, std::__u::char_traits<char>, std::__u::allocator<char>> const&, Halide::Target const&, Halide::LinkageType) third_party/halide/halide/src/Pipeline.cpp:558:28
    #46 0x555fc172a49b in Halide::Pipeline::compile_jit(Halide::Target const&) third_party/halide/halide/src/Pipeline.cpp:605:21
    #47 0x555fc172f4cf in Halide::Pipeline::realize(Halide::JITUserContext*, Halide::Pipeline::RealizationArg, Halide::Target const&, Halide::ParamMap const&) third_party/halide/halide/src/Pipeline.cpp:986:5
    #48 0x555fc172ebf5 in Halide::Pipeline::realize(Halide::JITUserContext*, std::__u::vector<int, std::__u::allocator<int>>, Halide::Target const&, Halide::ParamMap const&) third_party/halide/halide/src/Pipeline.cpp:746:9
    #49 0x555fc172e549 in Halide::Pipeline::realize(std::__u::vector<int, std::__u::allocator<int>>, Halide::Target const&, Halide::ParamMap const&) third_party/halide/halide/src/Pipeline.cpp:725:12
    #50 0x555fc120dbdd in Halide::Func::realize(std::__u::vector<int, std::__u::allocator<int>>, Halide::Target const&, Halide::ParamMap const&) third_party/halide/halide/src/Func.cpp:3324:23
    #51 0x555fc11b8745 in main third_party/halide/halide/test/correctness/code_explosion.cpp:19:7
    #52 0x7fd3f3858632 in __libc_start_main (/usr/grte/v5/lib64/libc.so.6+0x61632) (BuildId: 280088eab084c30a3992a9bce5c35b44)
    #53 0x555fc10e56a9 in _start /build/work/ab393f4ac612f9027aae6b1a7226027ba2a2/google3/blaze-out/k8-opt/bin/third_party/grte/v5_src/grte-scratch/BUILD/src/csu/../sysdeps/x86_64/start.S:120

SUMMARY: UndefinedBehaviorSanitizer: signed-integer-overflow third_party/halide/halide/src/Monotonic.cpp:108:28 in 

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions