From 3d7f0590b8bf893d3423f355be8dea7078fb3371 Mon Sep 17 00:00:00 2001 From: Jonathan Hall Date: Thu, 15 Dec 2016 09:55:44 +0000 Subject: [PATCH] A small bugfix to create valid stacktraces (#28) raven.NewStacktraceFrame() ignores frames for `runtime.goexit`, which lead to null values in stack traces, which sentry doesn't like. This fixes the oversight. --- sentry.go | 5 ++++- sentry_test.go | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sentry.go b/sentry.go index 97d24f0..b043466 100644 --- a/sentry.go +++ b/sentry.go @@ -292,7 +292,10 @@ func (hook *SentryHook) convertStackTrace(st errors.StackTrace) *raven.Stacktrac pc := uintptr(stFrames[i]) fn := runtime.FuncForPC(pc) file, line := fn.FileLine(pc) - frames = append(frames, raven.NewStacktraceFrame(pc, file, line, stConfig.Context, stConfig.InAppPrefixes)) + frame := raven.NewStacktraceFrame(pc, file, line, stConfig.Context, stConfig.InAppPrefixes) + if frame != nil { + frames = append(frames, frame) + } } return &raven.Stacktrace{Frames: frames} } diff --git a/sentry_test.go b/sentry_test.go index 16dd865..2ad9864 100644 --- a/sentry_test.go +++ b/sentry_test.go @@ -264,7 +264,7 @@ func TestSentryStacktrace(t *testing.T) { frames = packet.Exception.Stacktrace.Frames } expectedPkgErrorsStackTraceFilename := "github.com/evalphobia/logrus_sentry/sentry_test.go" - expectedFrameCount := 5 + expectedFrameCount := 4 expectedCulprit = "errorX" if packet.Culprit != expectedCulprit { t.Errorf("Expected culprit of '%s', got '%s'", expectedCulprit, packet.Culprit)