From 3f7a030e02c31aaf28e8e107270d6b33920c1cae Mon Sep 17 00:00:00 2001 From: Alan Donovan Date: Wed, 15 May 2024 14:55:19 -0400 Subject: runtime/debug: add SetCrashOutput(...CrashOptions) parameter This is a placeholder for future options (e.g. JSON). The parameter is temporarily variadic to avoid breaking x/telemetry (see CL 585378), but I plan to remove the "..." later this week. Updates #67182 Change-Id: I3f6f39455d852f92902f8e3f007d3093cbe555db Reviewed-on: https://go-review.googlesource.com/c/go/+/585557 LUCI-TryBot-Result: Go LUCI Reviewed-by: Austin Clements --- src/runtime/debug/stack.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/runtime/debug/stack.go') diff --git a/src/runtime/debug/stack.go b/src/runtime/debug/stack.go index 8dfea52d34..dc7dc5d569 100644 --- a/src/runtime/debug/stack.go +++ b/src/runtime/debug/stack.go @@ -31,6 +31,12 @@ func Stack() []byte { } } +// CrashOptions provides options that control the formatting of the +// fatal crash message. +type CrashOptions struct { + /* for future expansion */ +} + // SetCrashOutput configures a single additional file where unhandled // panics and other fatal errors are printed, in addition to standard error. // There is only one additional file: calling SetCrashOutput again overrides @@ -40,7 +46,14 @@ func Stack() []byte { // To disable this additional crash output, call SetCrashOutput(nil). // If called concurrently with a crash, some in-progress output may be written // to the old file even after an overriding SetCrashOutput returns. -func SetCrashOutput(f *os.File) error { +// +// TODO(adonovan): the variadic ... is a short-term measure to avoid +// breaking the call in x/telemetry; it will be removed before the +// go1.23 freeze. +func SetCrashOutput(f *os.File, opts ...CrashOptions) error { + if len(opts) > 1 { + panic("supply at most 1 CrashOptions") + } fd := ^uintptr(0) if f != nil { // The runtime will write to this file descriptor from -- cgit v1.3