sirupsen / logrus

Structured, pluggable logging for Go.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Panic possibly due to x/sys version

Meowzz95 opened this issue · comments

When I log using the default logger (logrus.Infof) in go test, some combination of logrus and other lib/code triggers panic.

I'm unable to reproduce this using a clean project but I can share my stack trace and library used.

fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0xb01dfacedebac1e pc=0x7fff20525c9e]

runtime stack:
runtime: unexpected return pc for runtime.sigpanic called from 0x7fff20525c9e
stack: frame={sp:0x7ffeefbff348, fp:0x7ffeefbff398} stack=[0x7ffeefb803e8,0x7ffeefbff450)
0x00007ffeefbff248:  0x01007ffeefbff268  0x0000000000000004 
0x00007ffeefbff258:  0x000000000000001f  0x00007fff20525c9e 
0x00007ffeefbff268:  0x0b01dfacedebac1e  0x0000000000000001 
0x00007ffeefbff278:  0x0000000004038eb1 <runtime.throw+0x0000000000000071>  0x00007ffeefbff318 
0x00007ffeefbff288:  0x000000000444f4c3  0x00007ffeefbff2d0 
0x00007ffeefbff298:  0x0000000004039168 <runtime.fatalthrow.func1+0x0000000000000048>  0x00000000046c91c0 
0x00007ffeefbff2a8:  0x0000000000000001  0x0000000000000001 
0x00007ffeefbff2b8:  0x00007ffeefbff318  0x0000000004038eb1 <runtime.throw+0x0000000000000071> 
0x00007ffeefbff2c8:  0x00000000046c91c0  0x00007ffeefbff308 
0x00007ffeefbff2d8:  0x00000000040390f0 <runtime.fatalthrow+0x0000000000000050>  0x00007ffeefbff2e8 
0x00007ffeefbff2e8:  0x0000000004039120 <runtime.fatalthrow.func1+0x0000000000000000>  0x00000000046c91c0 
0x00007ffeefbff2f8:  0x0000000004038eb1 <runtime.throw+0x0000000000000071>  0x00007ffeefbff318 
0x00007ffeefbff308:  0x00007ffeefbff338  0x0000000004038eb1 <runtime.throw+0x0000000000000071> 
0x00007ffeefbff318:  0x00007ffeefbff320  0x0000000004038ee0 <runtime.throw.func1+0x0000000000000000> 
0x00007ffeefbff328:  0x0000000004454816  0x000000000000002a 
0x00007ffeefbff338:  0x00007ffeefbff388  0x000000000404f116 <runtime.sigpanic+0x0000000000000396> 
0x00007ffeefbff348: <0x0000000004454816  0x00000000046075a0 
0x00007ffeefbff358:  0x00007ffeefbff3c8  0x000000000402a106 <runtime.(*mheap).allocSpan+0x0000000000000546> 
0x00007ffeefbff368:  0x000000c00024a000  0x0000000000002000 
0x00007ffeefbff378:  0x000000c000000008  0x0000000000000000 
0x00007ffeefbff388:  0x00007ffeefbff3d0 !0x00007fff20525c9e 
0x00007ffeefbff398: >0x00007ffeefbff3d0  0x000000000466c000 
0x00007ffeefbff3a8:  0x0000000000000517  0x00000000041560e5 <golang.org/x/sys/unix.libc_ioctl_trampoline+0x0000000000000005> 
0x00007ffeefbff3b8:  0x000000000406d6ff <runtime.syscall+0x000000000000001f>  0x000000c00004e5e8 
0x00007ffeefbff3c8:  0x00007ffeefbff410  0x000000c00004e5b8 
0x00007ffeefbff3d8:  0x000000000406b550 <runtime.asmcgocall+0x0000000000000070>  0x0000000000000001 
0x00007ffeefbff3e8:  0x0000000004014000 <runtime.evacuate+0x0000000000000380>  0x4000000000001018 
0x00007ffeefbff3f8:  0x0000000000000000  0x00000000046fe2d8 
0x00007ffeefbff408:  0x0000000000000a70  0x000000c000105d40 
0x00007ffeefbff418:  0x0000000004069669 <runtime.systemstack+0x0000000000000049>  0x0000000000000004 
0x00007ffeefbff428:  0x00000000044aa440  0x00000000046c91c0 
0x00007ffeefbff438:  0x00007ffeefbff480  0x0000000004069565 <runtime.mstart+0x0000000000000005> 
0x00007ffeefbff448:  0x000000000406951d <runtime.rt0_go+0x000000000000013d> 
runtime.throw({0x4454816, 0x46075a0})
	/usr/local/go/src/runtime/panic.go:1198 +0x71
runtime: unexpected return pc for runtime.sigpanic called from 0x7fff20525c9e
stack: frame={sp:0x7ffeefbff348, fp:0x7ffeefbff398} stack=[0x7ffeefb803e8,0x7ffeefbff450)
0x00007ffeefbff248:  0x01007ffeefbff268  0x0000000000000004 
0x00007ffeefbff258:  0x000000000000001f  0x00007fff20525c9e 
0x00007ffeefbff268:  0x0b01dfacedebac1e  0x0000000000000001 
0x00007ffeefbff278:  0x0000000004038eb1 <runtime.throw+0x0000000000000071>  0x00007ffeefbff318 
0x00007ffeefbff288:  0x000000000444f4c3  0x00007ffeefbff2d0 
0x00007ffeefbff298:  0x0000000004039168 <runtime.fatalthrow.func1+0x0000000000000048>  0x00000000046c91c0 
0x00007ffeefbff2a8:  0x0000000000000001  0x0000000000000001 
0x00007ffeefbff2b8:  0x00007ffeefbff318  0x0000000004038eb1 <runtime.throw+0x0000000000000071> 
0x00007ffeefbff2c8:  0x00000000046c91c0  0x00007ffeefbff308 
0x00007ffeefbff2d8:  0x00000000040390f0 <runtime.fatalthrow+0x0000000000000050>  0x00007ffeefbff2e8 
0x00007ffeefbff2e8:  0x0000000004039120 <runtime.fatalthrow.func1+0x0000000000000000>  0x00000000046c91c0 
0x00007ffeefbff2f8:  0x0000000004038eb1 <runtime.throw+0x0000000000000071>  0x00007ffeefbff318 
0x00007ffeefbff308:  0x00007ffeefbff338  0x0000000004038eb1 <runtime.throw+0x0000000000000071> 
0x00007ffeefbff318:  0x00007ffeefbff320  0x0000000004038ee0 <runtime.throw.func1+0x0000000000000000> 
0x00007ffeefbff328:  0x0000000004454816  0x000000000000002a 
0x00007ffeefbff338:  0x00007ffeefbff388  0x000000000404f116 <runtime.sigpanic+0x0000000000000396> 
0x00007ffeefbff348: <0x0000000004454816  0x00000000046075a0 
0x00007ffeefbff358:  0x00007ffeefbff3c8  0x000000000402a106 <runtime.(*mheap).allocSpan+0x0000000000000546> 
0x00007ffeefbff368:  0x000000c00024a000  0x0000000000002000 
0x00007ffeefbff378:  0x000000c000000008  0x0000000000000000 
0x00007ffeefbff388:  0x00007ffeefbff3d0 !0x00007fff20525c9e 
0x00007ffeefbff398: >0x00007ffeefbff3d0  0x000000000466c000 
0x00007ffeefbff3a8:  0x0000000000000517  0x00000000041560e5 <golang.org/x/sys/unix.libc_ioctl_trampoline+0x0000000000000005> 
0x00007ffeefbff3b8:  0x000000000406d6ff <runtime.syscall+0x000000000000001f>  0x000000c00004e5e8 
0x00007ffeefbff3c8:  0x00007ffeefbff410  0x000000c00004e5b8 
0x00007ffeefbff3d8:  0x000000000406b550 <runtime.asmcgocall+0x0000000000000070>  0x0000000000000001 
0x00007ffeefbff3e8:  0x0000000004014000 <runtime.evacuate+0x0000000000000380>  0x4000000000001018 
0x00007ffeefbff3f8:  0x0000000000000000  0x00000000046fe2d8 
0x00007ffeefbff408:  0x0000000000000a70  0x000000c000105d40 
0x00007ffeefbff418:  0x0000000004069669 <runtime.systemstack+0x0000000000000049>  0x0000000000000004 
0x00007ffeefbff428:  0x00000000044aa440  0x00000000046c91c0 
0x00007ffeefbff438:  0x00007ffeefbff480  0x0000000004069565 <runtime.mstart+0x0000000000000005> 
0x00007ffeefbff448:  0x000000000406951d <runtime.rt0_go+0x000000000000013d> 
runtime.sigpanic()
	/usr/local/go/src/runtime/signal_unix.go:719 +0x396

goroutine 35 [syscall]:
syscall.syscall(0x41560e0, 0x2, 0x40487413, 0xc00004e678)
	/usr/local/go/src/runtime/sys_darwin.go:22 +0x3b fp=0xc00004e5e8 sp=0xc00004e5c8 pc=0x406819b
syscall.syscall(0x4016825, 0xc0001140c0, 0xc0001140c0, 0xc000123210)
	<autogenerated>:1 +0x26 fp=0xc00004e630 sp=0xc00004e5e8 pc=0x406dec6
golang.org/x/sys/unix.ioctl(0xd3b2146fe4514b4a, 0x1, 0xc00004e690)
	/Users/mimimi/go/pkg/mod/golang.org/x/sys@v0.0.0-20210403161142-5e06dd20ab57/unix/zsyscall_darwin_amd64.go:690 +0x39 fp=0xc00004e660 sp=0xc00004e630 pc=0x4155d79
golang.org/x/sys/unix.IoctlGetTermios(...)
	/Users/mimimi/go/pkg/mod/golang.org/x/sys@v0.0.0-20210403161142-5e06dd20ab57/unix/ioctl.go:73
github.com/sirupsen/logrus.isTerminal(0x400)
	/Users/mimimi/go/pkg/mod/github.com/sirupsen/logrus@v1.8.1/terminal_check_bsd.go:11 +0x50 fp=0xc00004e6d0 sp=0xc00004e660 pc=0x415c7f0
github.com/sirupsen/logrus.checkIfTerminal({0x44ae8a0, 0xc00011a010})
	/Users/mimimi/go/pkg/mod/github.com/sirupsen/logrus@v1.8.1/terminal_check_notappengine.go:13 +0x75 fp=0xc00004e6e8 sp=0xc00004e6d0 pc=0x415c895
github.com/sirupsen/logrus.(*TextFormatter).init(0xc0001eed20, 0x4f93648)
	/Users/mimimi/go/pkg/mod/github.com/sirupsen/logrus@v1.8.1/text_formatter.go:106 +0x34 fp=0xc00004e768 sp=0xc00004e6e8 pc=0x415c974
github.com/sirupsen/logrus.(*TextFormatter).Format.func1()
	/Users/mimimi/go/pkg/mod/github.com/sirupsen/logrus@v1.8.1/text_formatter.go:196 +0x25 fp=0xc00004e788 sp=0xc00004e768 pc=0x415e025
sync.(*Once).doSlow(0x44b37c8, 0xc000132af8)
	/usr/local/go/src/sync/once.go:68 +0xd2 fp=0xc00004e7f0 sp=0xc00004e788 pc=0x4074172
sync.(*Once).Do(...)
	/usr/local/go/src/sync/once.go:59
github.com/sirupsen/logrus.(*TextFormatter).Format(0xc0001eed20, 0xc0002384d0)
	/Users/mimimi/go/pkg/mod/github.com/sirupsen/logrus@v1.8.1/text_formatter.go:196 +0xebe fp=0xc00004ed60 sp=0xc00004e7f0 pc=0x415d9de
github.com/sirupsen/logrus.(*Entry).write(0xc0002384d0)
	/Users/mimimi/go/pkg/mod/github.com/sirupsen/logrus@v1.8.1/entry.go:279 +0x56 fp=0xc00004edf0 sp=0xc00004ed60 pc=0x4157cb6
github.com/sirupsen/logrus.(*Entry).log(0xc0002466b8, 0x4, {0xc0002189a4, 0x4})
	/Users/mimimi/go/pkg/mod/github.com/sirupsen/logrus@v1.8.1/entry.go:251 +0x219 fp=0xc00004ee60 sp=0xc00004edf0 pc=0x41578b9
github.com/sirupsen/logrus.(*Entry).Log(0xc000238460, 0x4, {0xc0002466b8, 0x0, 0x0})
	/Users/mimimi/go/pkg/mod/github.com/sirupsen/logrus@v1.8.1/entry.go:293 +0x4f fp=0xc00004ee90 sp=0xc00004ee60 pc=0x4157f0f
github.com/sirupsen/logrus.(*Entry).Logf(0xc000238460, 0x4, {0x4444f10, 0xc000246720}, {0x0, 0x24, 0x474})
	/Users/mimimi/go/pkg/mod/github.com/sirupsen/logrus@v1.8.1/entry.go:338 +0x85 fp=0xc00004eed8 sp=0xc00004ee90 pc=0x4158465
github.com/sirupsen/logrus.(*Logger).Logf(0xc000207dc0, 0x4, {0x4444f10, 0x4}, {0x0, 0x0, 0x0})
	/Users/mimimi/go/pkg/mod/github.com/sirupsen/logrus@v1.8.1/logger.go:151 +0x85 fp=0xc00004ef28 sp=0xc00004eed8 pc=0x415a425
github.com/sirupsen/logrus.(*Logger).Infof(...)
	/Users/mimimi/go/pkg/mod/github.com/sirupsen/logrus@v1.8.1/logger.go:165
github.com/sirupsen/logrus.Infof(...)
	/Users/mimimi/go/pkg/mod/github.com/sirupsen/logrus@v1.8.1/exported.go:199
XXX/services.TestXXXService(0x0)
	/Users/mimimi/go/src/XXX/services/XXXService_test.go:98 +0x3a fp=0xc00004ef70 sp=0xc00004ef28 pc=0x42a47da
testing.tRunner(0xc000105ba0, 0x44613f0)
	/usr/local/go/src/testing/testing.go:1259 +0x102 fp=0xc00004efc0 sp=0xc00004ef70 pc=0x40f5182
testing.(*T).Run·dwrap·21()
	/usr/local/go/src/testing/testing.go:1306 +0x2a fp=0xc00004efe0 sp=0xc00004efc0 pc=0x40f5e8a
runtime.goexit()
	/usr/local/go/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc00004efe8 sp=0xc00004efe0 pc=0x406b841
created by testing.(*T).Run
	/usr/local/go/src/testing/testing.go:1306 +0x35a

goroutine 1 [chan receive]:
testing.(*T).Run(0xc000105a00, {0x4449226, 0x664e0ae033c9}, 0x44613f0)
	/usr/local/go/src/testing/testing.go:1307 +0x375
testing.runTests.func1(0xc00022c9f0)
	/usr/local/go/src/testing/testing.go:1598 +0x6e
testing.tRunner(0xc000105a00, 0xc000161d18)
	/usr/local/go/src/testing/testing.go:1259 +0x102
testing.runTests(0xc000152400, {0x46b9940, 0x1, 0x1}, {0x40866ed, 0x444819c, 0x0})
	/usr/local/go/src/testing/testing.go:1596 +0x43f
testing.(*M).Run(0xc000152400)
	/usr/local/go/src/testing/testing.go:1504 +0x51d
main.main()
	_testmain.go:43 +0x14b

Library used:

go 1.17

require (
	github.com/labstack/echo/v4 v4.5.0
	github.com/sirupsen/logrus v1.8.1
	github.com/stretchr/testify v1.7.0
	gorm.io/driver/mysql v1.1.2
	gorm.io/driver/sqlite v1.1.5
	gorm.io/gorm v1.21.15
)

require (
	github.com/davecgh/go-spew v1.1.1 // indirect
	github.com/go-sql-driver/mysql v1.6.0 // indirect
	github.com/jinzhu/inflection v1.0.0 // indirect
	github.com/jinzhu/now v1.1.2 // indirect
	github.com/labstack/gommon v0.3.0 // indirect
	github.com/mattn/go-colorable v0.1.8 // indirect
	github.com/mattn/go-isatty v0.0.12 // indirect
	github.com/mattn/go-sqlite3 v1.14.8 // indirect
	github.com/pmezard/go-difflib v1.0.0 // indirect
	github.com/valyala/bytebufferpool v1.0.0 // indirect
	github.com/valyala/fasttemplate v1.2.1 // indirect
	golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect
	golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 // indirect
	golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 // indirect
	golang.org/x/text v0.3.6 // indirect
	gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect
)

This happens every time I run the test, even the log call is the first line of code in a test method like

func TestXXX(t *testing.T) {
	logrus.Infof("test") //panic
	suite.Run(t, new(XXX))
}

I searched and found this might be related golang/go#46763

I think it is a duplicate of #1275

I'm unable to reproduce this using a clean project

I think go get -u github.com/sirupsen/logrus should update golang.org/x/sys

Yea, I think I did some package upgrade and the error was mysteriously gone. The part where I don't understand is, I only created this project days ago, and freshly installed logrus, why it wasn't using the latest version of x/sys back then?

created this project days ago

#1280 was merged on 2021-09-11T12:20:32Z (just 8 days ago)

I guess that's it!
Thanks for the help!