From 0eeb2f115bf89919a82673922dea89a5360b66a5 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Thu, 29 Jun 2017 14:16:17 -0400 Subject: [PATCH] go-weave/amb: print stack trace on failure --- go-weave/amb/run.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/go-weave/amb/run.go b/go-weave/amb/run.go index e8c62d9..96df35b 100644 --- a/go-weave/amb/run.go +++ b/go-weave/amb/run.go @@ -7,6 +7,8 @@ package amb import ( "errors" "fmt" + "os" + "runtime" ) // A Strategy describes how to explore a space of ambiguous values. @@ -87,6 +89,15 @@ func (s *Scheduler) run1(root func()) { if err != nil { // TODO: Report path. fmt.Println("failure:", err) + var buf []byte + for i := 1 << 10; i < 1<<20; i *= 2 { + buf = make([]byte, i) + buf = buf[:runtime.Stack(buf, false)] + if len(buf) < i { + break + } + } + os.Stdout.Write(buf) } }() root()