diff --git a/api/next/42888.txt b/api/next/42888.txt index f9b8e1e4754..dcba97b9fa1 100644 --- a/api/next/42888.txt +++ b/api/next/42888.txt @@ -1 +1,2 @@ -pkg runtime/debug, func SetCrashOutput(*os.File) error #42888 +pkg runtime/debug, type CrashOptions struct #67182 +pkg runtime/debug, func SetCrashOutput(*os.File, ...CrashOptions) error #42888 diff --git a/doc/next/6-stdlib/99-minor/runtime/debug/67182.md b/doc/next/6-stdlib/99-minor/runtime/debug/67182.md new file mode 100644 index 00000000000..d83864a3dbb --- /dev/null +++ b/doc/next/6-stdlib/99-minor/runtime/debug/67182.md @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/runtime/debug/stack.go b/src/runtime/debug/stack.go index 8dfea52d340..dc7dc5d569e 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