Skip to content

Stack overflow from deeply nested lambda #5566

@bbannier

Description

@bbannier

For fun I wrote a small script which abuses &default_insert to compute a table with all Fibonacci numbers. While this runs for large inputs with overflows in the result, for huge inputs I am hitting stack overflows in Zeek's script interpreter.

# Table holding all Fibonacci numbers.
global FIB: table[count] of count;

event zeek_init()
	{
	# Add an attribute since `&default_insert` cannot refer to the table being declared 🤡
	local vals: table[count] of count &default_insert=function(n: count): count
		{
		print cat("compute ", n);
		return n < 2 ? n : FIB[n - 1] + FIB[n - 2];
		};

	FIB = vals;
	}

event zeek_init()
	{
	print FIB[20000];
	}

With an ASAN build this reports

$ ASAN_OPTIONS=detect_container_overflow=0 zeek -b /tmp/fib.zeek
AddressSanitizer:DEADLYSIGNAL
=================================================================
==70111==ERROR: AddressSanitizer: stack-overflow on address 0x00016cccbf60 (pc 0x000104705780 bp 0x00016cccc450 sp 0x00016cccbf60 T0)
    #0 0x000104705780 in zeek::detail::BinaryExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:697
    #1 0x0001047046c0 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:668
    #2 0x00010471fea8 in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2189
    #3 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #4 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #5 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #6 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #7 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #8 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #9 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #10 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #11 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #12 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #13 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #14 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #15 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #16 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #17 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #18 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #19 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #20 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #21 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #22 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #23 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #24 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #25 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #26 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #27 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #28 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #29 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #30 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #31 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #32 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #33 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #34 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #35 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #36 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #37 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #38 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #39 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #40 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #41 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #42 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #43 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #44 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #45 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #46 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #47 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #48 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #49 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #50 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #51 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #52 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #53 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #54 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #55 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #56 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #57 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #58 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #59 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #60 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #61 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #62 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #63 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #64 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #65 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #66 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #67 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #68 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #69 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #70 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #71 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #72 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #73 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #74 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #75 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #76 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #77 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #78 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #79 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #80 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #81 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #82 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #83 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #84 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #85 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #86 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #87 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #88 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #89 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #90 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #91 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #92 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #93 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #94 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #95 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #96 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #97 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #98 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #99 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #100 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #101 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #102 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #103 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #104 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #105 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #106 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #107 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #108 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #109 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #110 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #111 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #112 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #113 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #114 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #115 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #116 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #117 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #118 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #119 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #120 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #121 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #122 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #123 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #124 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #125 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #126 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #127 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #128 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #129 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #130 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #131 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #132 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #133 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #134 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #135 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #136 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #137 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #138 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #139 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #140 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #141 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #142 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #143 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #144 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #145 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #146 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #147 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #148 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #149 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #150 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #151 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #152 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #153 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #154 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #155 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #156 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #157 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #158 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #159 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #160 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #161 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #162 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #163 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #164 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #165 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #166 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #167 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #168 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #169 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #170 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #171 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #172 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #173 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #174 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #175 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #176 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #177 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #178 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #179 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #180 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #181 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #182 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #183 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #184 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #185 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #186 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #187 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #188 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #189 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #190 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #191 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #192 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #193 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #194 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #195 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #196 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #197 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #198 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #199 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #200 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #201 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #202 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #203 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #204 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #205 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #206 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #207 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #208 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #209 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #210 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #211 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #212 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #213 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #214 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #215 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #216 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #217 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #218 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #219 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #220 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #221 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #222 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #223 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #224 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #225 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #226 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #227 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #228 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #229 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #230 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #231 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #232 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #233 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #234 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #235 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #236 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #237 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #238 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #239 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #240 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #241 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #242 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #243 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #244 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #245 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190
    #246 0x000104943d20 in zeek::detail::ReturnStmt::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1395
    #247 0x0001049445ec in zeek::detail::StmtList::Exec(zeek::detail::Frame*, zeek::detail::StmtFlowType&) Stmt.cc:1427
    #248 0x000104834938 in zeek::detail::ScriptFunc::Invoke(std::__1::vector<zeek::IntrusivePtr<zeek::Val>, std::__1::allocator<zeek::IntrusivePtr<zeek::Val>>>*, zeek::detail::Frame*) const Func.cc:387
    #249 0x0001049d8280 in zeek::TableVal::Default(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2071
    #250 0x0001049d9f34 in zeek::TableVal::FindOrDefault(zeek::IntrusivePtr<zeek::Val> const&) Val.cc:2144
    #251 0x00010472a9e0 in zeek::detail::IndexExpr::Fold(zeek::Val*, zeek::Val*) const Expr.cc:2688
    #252 0x0001047295e8 in zeek::detail::IndexExpr::Eval(zeek::detail::Frame*) const Expr.cc:2659
    #253 0x000104703d14 in zeek::detail::BinaryExpr::Eval(zeek::detail::Frame*) const Expr.cc:616
    #254 0x00010471ff6c in zeek::detail::CondExpr::Eval(zeek::detail::Frame*) const Expr.cc:2190

SUMMARY: AddressSanitizer: stack-overflow Expr.cc:697 in zeek::detail::BinaryExpr::Fold(zeek::Val*, zeek::Val*) const
==70111==ABORTING

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions