]> Cypherpunks repositories - gostls13.git/commitdiff
runtime/debug: add SetCrashOutput(...CrashOptions) parameter
authorAlan Donovan <adonovan@google.com>
Wed, 15 May 2024 18:55:19 +0000 (14:55 -0400)
committerAlan Donovan <adonovan@google.com>
Wed, 15 May 2024 21:04:14 +0000 (21:04 +0000)
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 <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Austin Clements <austin@google.com>
api/next/42888.txt
doc/next/6-stdlib/99-minor/runtime/debug/67182.md [new file with mode: 0644]
src/runtime/debug/stack.go

index f9b8e1e4754dada46000dfa5aceec1a1a0393987..dcba97b9fa136a4f8a76aeac877cf70194292f52 100644 (file)
@@ -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 (file)
index 0000000..d83864a
--- /dev/null
@@ -0,0 +1 @@
+<!-- pacify TestCheckAPIFragments -->
\ No newline at end of file
index 8dfea52d340fa72bca4771d1ac89bd5c3c27f0b6..dc7dc5d569e53ba15bfe272cec5a902180a6270a 100644 (file)
@@ -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