diff --git a/sentry.go b/sentry.go index 25dc18c..75c3676 100644 --- a/sentry.go +++ b/sentry.go @@ -202,7 +202,9 @@ func (hook *SentryHook) Fire(entry *logrus.Entry) error { packet.Culprit = err.Error() } else { currentStacktrace := raven.NewStacktrace(stConfig.Skip, stConfig.Context, stConfig.InAppPrefixes) - packet.Interfaces = append(packet.Interfaces, currentStacktrace) + if currentStacktrace != nil { + packet.Interfaces = append(packet.Interfaces, currentStacktrace) + } } } else { // set the culprit even when the stack trace is disabled, as long as we have an error diff --git a/sentry_test.go b/sentry_test.go index 5701c2e..dea7bdf 100644 --- a/sentry_test.go +++ b/sentry_test.go @@ -325,6 +325,16 @@ func TestSentryStacktrace(t *testing.T) { if !strings.HasSuffix(frames[0].Filename, expectedPkgErrorsStackTraceFilename) { t.Error("Stacktrace should be taken from err if it implements the pkgErrorStackTracer interface") } + + // zero stack frames + defer func() { + if err := recover(); err != nil { + t.Error("Zero stack frames should not cause panic") + } + }() + hook.StacktraceConfiguration.Skip = 1000 + logger.Error(message) + <-pch // check panic }) }