From f2d7d3906f0e05eac4413b05be5b449f343025f2 Mon Sep 17 00:00:00 2001 From: Guillaume Ballet <3272758+gballet@users.noreply.github.com> Date: Fri, 16 May 2025 10:03:51 +0200 Subject: [PATCH] disable stack printing in test, to avoid confusions --- cmd/utils/flags.go | 2 +- eth/backend.go | 2 +- eth/tracers/recover.go | 11 ++++++++--- eth/tracers/tracers_test.go | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 7b2730e4cf..86b4a1623c 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -2181,7 +2181,7 @@ func MakeChain(ctx *cli.Context, stack *node.Node, readonly bool) (*core.BlockCh if err != nil { Fatalf("Failed to create tracer %q: %v", name, err) } - safeHooks, err := tracers.NewRecoverTracer(stack, t) + safeHooks, err := tracers.NewRecoverTracer(stack, t, true) if err != nil { Fatalf("Failed to create safety wrapper for tracer %q: %v", name, err) } diff --git a/eth/backend.go b/eth/backend.go index 1009f94537..d8731f699d 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -210,7 +210,7 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { if err != nil { return nil, fmt.Errorf("failed to create tracer %s: %v", config.VMTrace, err) } - safeHooks, err := tracers.NewRecoverTracer(stack, t) + safeHooks, err := tracers.NewRecoverTracer(stack, t, true) if err != nil { return nil, fmt.Errorf("failed to create safety wrappers for %s tracer: %v", config.VMTrace, err) } diff --git a/eth/tracers/recover.go b/eth/tracers/recover.go index ab80e2a212..02f737258c 100644 --- a/eth/tracers/recover.go +++ b/eth/tracers/recover.go @@ -35,16 +35,19 @@ import ( type recoverTracer struct { node *node.Node child *tracing.Hooks + + // false in tests, to prevent stack printing and misatribution of a bug + printStack bool } // NewRecoverTracer instantiates a recoverTracer and returns a wrapped tracing.Hooks. // Only hook fields which are non-nil in the child are replaced with the corresponding // recoverTracer method. -func NewRecoverTracer(node *node.Node, child *tracing.Hooks) (*tracing.Hooks, error) { +func NewRecoverTracer(node *node.Node, child *tracing.Hooks, printStack bool) (*tracing.Hooks, error) { if child == nil { return nil, fmt.Errorf("child tracer is nil") } - rt := &recoverTracer{node: node, child: child} + rt := &recoverTracer{node, child, printStack} return rt.wrapHooks() } @@ -90,7 +93,9 @@ func (rt *recoverTracer) safeCall(name string, shutdown bool, fn func()) { if r := recover(); r != nil { log.Error(fmt.Sprintf("panic in child tracer during %s: %v", name, r)) if shutdown { - debug.PrintStack() + if rt.printStack { + debug.PrintStack() + } go rt.node.Close() } } diff --git a/eth/tracers/tracers_test.go b/eth/tracers/tracers_test.go index 71b45616f8..1fbd00f270 100644 --- a/eth/tracers/tracers_test.go +++ b/eth/tracers/tracers_test.go @@ -142,7 +142,7 @@ func TestSafeTracer(t *testing.T) { faultyTracer := &tracing.Hooks{OnTxStart: func(*tracing.VMContext, *types.Transaction, common.Address) { panic("someone mispronounced clef") }} - safeHooks, err := NewRecoverTracer(nil, faultyTracer) + safeHooks, err := NewRecoverTracer(nil, faultyTracer, false) if err != nil { t.Fatal(err) }