Skip to content

Commit 35da34b

Browse files
authored
fix: added safegurd to protect infinite stack trace (#54)
1 parent c8b066a commit 35da34b

2 files changed

Lines changed: 10 additions & 3 deletions

File tree

common/entrypoint.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ func ProgramEntrypoint(arch string) func(function string) bool {
2424
function == "runtime.systemstack" ||
2525
function == "runtime.gopanic" ||
2626
function == "runtime.chanrecv" ||
27-
function == "runtime.startm" || // 32 bit specific
28-
function == "runtime.sysAlloc" // // 32 bit specific
27+
function == "runtime.startm" ||
28+
function == "runtime.sysAlloc" ||
29+
function == "runtime.chansend"
2930
}
3031
case "mips64":
3132
return func(function string) bool {
@@ -40,7 +41,10 @@ func ProgramEntrypoint(arch string) func(function string) bool {
4041
function == "runtime.morestack" ||
4142
function == "runtime.systemstack" ||
4243
function == "runtime.gopanic" ||
43-
function == "runtime.chanrecv"
44+
function == "runtime.chanrecv" ||
45+
function == "runtime.startm" ||
46+
function == "runtime.sysAlloc" ||
47+
function == "runtime.chansend"
4448
}
4549
}
4650
return func(function string) bool {

common/stack_tracer.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ func TraceAllAsmCaller(
9191
var visit func(segment asmparser.Segment)
9292

9393
visit = func(segment asmparser.Segment) {
94+
if len(sources) >= 20 { // protect for infinite searching
95+
return
96+
}
9497
if seen[segment] {
9598
return
9699
}

0 commit comments

Comments
 (0)