Skip to content

Commit 54be5f3

Browse files
committed
Merge branch 'release/v1.5.4'
2 parents 7a2f196 + 3bd81bd commit 54be5f3

File tree

2 files changed

+3
-38
lines changed

2 files changed

+3
-38
lines changed

stack.go

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func Caller(skip int) Call {
3939
}
4040

4141
c.pc = pcs[1]
42-
if runtime.FuncForPC(pcs[0]) != sigpanic {
42+
if runtime.FuncForPC(pcs[0]).Name() != "runtime.sigpanic" {
4343
c.pc--
4444
}
4545
c.fn = runtime.FuncForPC(c.pc)
@@ -205,33 +205,6 @@ func (cs CallStack) Format(s fmt.State, verb rune) {
205205
s.Write(closeBracketBytes)
206206
}
207207

208-
// findSigpanic intentionally executes faulting code to generate a stack trace
209-
// containing an entry for runtime.sigpanic.
210-
func findSigpanic() *runtime.Func {
211-
var fn *runtime.Func
212-
var p *int
213-
func() int {
214-
defer func() {
215-
if p := recover(); p != nil {
216-
var pcs [512]uintptr
217-
n := runtime.Callers(2, pcs[:])
218-
for _, pc := range pcs[:n] {
219-
f := runtime.FuncForPC(pc)
220-
if f.Name() == "runtime.sigpanic" {
221-
fn = f
222-
break
223-
}
224-
}
225-
}
226-
}()
227-
// intentional nil pointer dereference to trigger sigpanic
228-
return *p
229-
}()
230-
return fn
231-
}
232-
233-
var sigpanic = findSigpanic()
234-
235208
// Trace returns a CallStack for the current goroutine with element 0
236209
// identifying the calling function.
237210
func Trace() CallStack {
@@ -241,7 +214,7 @@ func Trace() CallStack {
241214

242215
for i, pc := range pcs[:n] {
243216
pcFix := pc
244-
if i > 0 && cs[i-1].fn != sigpanic {
217+
if i > 0 && cs[i-1].fn.Name() != "runtime.sigpanic" {
245218
pcFix--
246219
}
247220
cs[i] = Call{

stackinternal_test.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,6 @@ import (
55
"testing"
66
)
77

8-
func TestFindSigpanic(t *testing.T) {
9-
t.Parallel()
10-
sp := findSigpanic()
11-
if got, want := sp.Name(), "runtime.sigpanic"; got != want {
12-
t.Errorf("got == %v, want == %v", got, want)
13-
}
14-
}
15-
168
func TestCaller(t *testing.T) {
179
t.Parallel()
1810

@@ -55,7 +47,7 @@ func TestTrace(t *testing.T) {
5547

5648
cs := fh.labyrinth()
5749

58-
lines := []int{51, 41, 56}
50+
lines := []int{43, 33, 48}
5951

6052
for i, line := range lines {
6153
if got, want := cs[i].line(), line; got != want {

0 commit comments

Comments
 (0)