ebitengine / purego

Apache License 2.0
2.16k stars 68 forks source link

fatal error: unexpected signal during runtime execution #169

Closed jiftle closed 1 year ago

jiftle commented 1 year ago

go version: go1.20.1

my service run on aarch64 linux, panic.

  1. run on service mode alone, it is ok
  2. but run on child process mode , it panic.

this is error:

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

runtime stack:
runtime.throw({0x7d1e3c?, 0x7f7d6a2630?})
    /opt/my-apps/go/src/runtime/panic.go:1047 +0x40 fp=0x7f7d6a25e0 sp=0x7f7d6a25b0 pc=0x45490
runtime.sigpanic()
    /opt/my-apps/go/src/runtime/signal_unix.go:821 +0x240 fp=0x7f7d6a2620 sp=0x7f7d6a25e0 pc=0x5c220

goroutine 76 [syscall]:
runtime.cgocall(0x5cad50, 0x40000fe2c0)
    /opt/my-apps/go/src/runtime/cgocall.go:157 +0x50 fp=0x40002aae30 sp=0x40002aadf0 pc=0x14620
github.com/ebitengine/purego.RegisterFunc.func1({0xe486c8?, 0x0?, 0x0?})
    /data/repo/golang/gopath/pkg/mod/github.com/ebitengine/purego@v0.5.0-rc.2/func.go:249 +0x7b0 fp=0x40002ab1b0 sp=0x40002aae30 pc=0x5ca600
reflect.callReflect(0x400012e300, 0x40002ab798, 0x40002ab5f8, 0x40002ab600)
    /opt/my-apps/go/src/reflect/value.go:772 +0x3fc fp=0x40002ab5a0 sp=0x40002ab1b0 pc=0xa87bc
reflect.callReflect(0x400012e300, 0x40002ab798, 0x40002ab5f8, 0x40002ab600)
    <autogenerated>:1 +0x28 fp=0x40002ab5d0 sp=0x40002ab5a0 pc=0xba1d8
reflect.makeFuncStub()
    /opt/my-apps/go/src/reflect/asm_arm64.s:48 +0x58 fp=0x40002ab790 sp=0x40002ab5d0 pc=0xb4188
cardprinter/internal/idp510.Open()
    /disk/repo/cardprinter/internal/idp510/idp510_linux.go:146 +0x9c fp=0x40002ab810 sp=0x40002ab790 pc=0x62938c
cardprinter/internal/idp510.(*CardPrinterLibImpl).Open(0x40001284ac)
    /disk/repo/cardprinter/internal/idp510/apimpl.go:59 +0x40 fp=0x40002ab880 sp=0x40002ab810 pc=0x6280c0
cardprinter/api.(*CardPrinter).Open(0x400012eed0)
    /disk/repo/cardprinter/api/base.go:19 +0x108 fp=0x40002ab930 sp=0x40002ab880 pc=0x62b2c8
idp510serv/app/logic.(*LogicService).Open(0x400012a630, {0x7ada96?, 0x30?}, 0x0?)
    /disk/repo/idp510serv/app/logic/logic.go:14 +0x3c fp=0x40002ab960 sp=0x40002ab930 pc=0x62e5bc
idp510serv/app.(*IDP5510ServiceServer).Open(0x400012a640, {0x8b8aa0, 0x400012ec60}, 0x0?)
    /disk/repo/idp510serv/app/server.go:62 +0xc4 fp=0x40002ab9d0 sp=0x40002ab960 pc=0x631f84
idp510serv/pb/idp510._IDP510Service_Open_Handler({0x7735e0?, 0x400012a640}, {0x8b8aa0, 0x400012ec60}, 0x400018a000, 0x0)
    /disk/repo/idp510serv/pb/idp510/idp510_grpc.pb.go:329 +0x164 fp=0x40002aba30 sp=0x40002ab9d0 pc=0x3deb84
google.golang.org/grpc.(*Server).processUnaryRPC(0x40001b25a0, {0x8bc360, 0x4000602340}, 0x4000342120, 0x400012ef60, 0xdec4d0, 0x0)
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:1336 +0xb38 fp=0x40002abe20 sp=0x40002aba30 pc=0x3c6298
google.golang.org/grpc.(*Server).handleStream(0x40001b25a0, {0x8bc360, 0x4000602340}, 0x4000342120, 0x0)
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:1704 +0x80c fp=0x40002abf50 sp=0x40002abe20 pc=0x3ca68c
google.golang.org/grpc.(*Server).serveStreams.func1.2()
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:965 +0x84 fp=0x40002abfd0 sp=0x40002abf50 pc=0x3c40d4
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40002abfd0 sp=0x40002abfd0 pc=0x79004
created by google.golang.org/grpc.(*Server).serveStreams.func1
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:963 +0x278

goroutine 1 [IO wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x40005d7a80 sp=0x40005d7a60 pc=0x47ee0
runtime.netpollblock(0x0?, 0x0?, 0x0?)
    /opt/my-apps/go/src/runtime/netpoll.go:527 +0x158 fp=0x40005d7ac0 sp=0x40005d7a80 pc=0x40c28
internal/poll.runtime_pollWait(0x7f844c2ef8, 0x72)
    /opt/my-apps/go/src/runtime/netpoll.go:306 +0xa0 fp=0x40005d7af0 sp=0x40005d7ac0 pc=0x73340
internal/poll.(*pollDesc).wait(0x4000484e80?, 0x1bf58?, 0x0)
    /opt/my-apps/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x40005d7b20 sp=0x40005d7af0 pc=0xe0278
internal/poll.(*pollDesc).waitRead(...)
    /opt/my-apps/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0x4000484e80)
    /opt/my-apps/go/src/internal/poll/fd_unix.go:614 +0x250 fp=0x40005d7bd0 sp=0x40005d7b20 pc=0xe4d00
net.(*netFD).accept(0x4000484e80)
    /opt/my-apps/go/src/net/fd_unix.go:172 +0x28 fp=0x40005d7c90 sp=0x40005d7bd0 pc=0x1e8f28
net.(*TCPListener).accept(0x400000ef30)
    /opt/my-apps/go/src/net/tcpsock_posix.go:148 +0x28 fp=0x40005d7cc0 sp=0x40005d7c90 pc=0x200868
net.(*TCPListener).Accept(0x400000ef30)
    /opt/my-apps/go/src/net/tcpsock.go:297 +0x2c fp=0x40005d7d00 sp=0x40005d7cc0 pc=0x1ffa2c
google.golang.org/grpc.(*Server).Serve(0x40001b25a0, {0x8b8270?, 0x400000ef30})
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:823 +0x460 fp=0x40005d7e50 sp=0x40005d7d00 pc=0x3c2c10
main.main()
    /disk/repo/idp510serv/main.go:41 +0x384 fp=0x40005d7f70 sp=0x40005d7e50 pc=0x633664
runtime.main()
    /opt/my-apps/go/src/runtime/proc.go:250 +0x200 fp=0x40005d7fd0 sp=0x40005d7f70 pc=0x47ad0
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40005d7fd0 sp=0x40005d7fd0 pc=0x79004

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x4000060fa0 sp=0x4000060f80 pc=0x47ee0
runtime.goparkunlock(...)
    /opt/my-apps/go/src/runtime/proc.go:387
runtime.forcegchelper()
    /opt/my-apps/go/src/runtime/proc.go:305 +0xb0 fp=0x4000060fd0 sp=0x4000060fa0 pc=0x47d30
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000060fd0 sp=0x4000060fd0 pc=0x79004
created by runtime.init.6
    /opt/my-apps/go/src/runtime/proc.go:293 +0x24

goroutine 3 [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x4000061760 sp=0x4000061740 pc=0x47ee0
runtime.goparkunlock(...)
    /opt/my-apps/go/src/runtime/proc.go:387
runtime.bgsweep(0x0?)
    /opt/my-apps/go/src/runtime/mgcsweep.go:319 +0x100 fp=0x40000617b0 sp=0x4000061760 pc=0x32f30
runtime.gcenable.func1()
    /opt/my-apps/go/src/runtime/mgc.go:178 +0x28 fp=0x40000617d0 sp=0x40000617b0 pc=0x27f88
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40000617d0 sp=0x40000617d0 pc=0x79004
created by runtime.gcenable
    /opt/my-apps/go/src/runtime/mgc.go:178 +0x6c

goroutine 4 [GC scavenge wait]:
runtime.gopark(0x4000088000?, 0x8ad9b8?, 0x0?, 0x0?, 0x0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x4000061f50 sp=0x4000061f30 pc=0x47ee0
runtime.goparkunlock(...)
    /opt/my-apps/go/src/runtime/proc.go:387
runtime.(*scavengerState).park(0xe13240)
    /opt/my-apps/go/src/runtime/mgcscavenge.go:400 +0x5c fp=0x4000061f80 sp=0x4000061f50 pc=0x30e5c
runtime.bgscavenge(0x0?)
    /opt/my-apps/go/src/runtime/mgcscavenge.go:633 +0xa8 fp=0x4000061fb0 sp=0x4000061f80 pc=0x313f8
runtime.gcenable.func2()
    /opt/my-apps/go/src/runtime/mgc.go:179 +0x28 fp=0x4000061fd0 sp=0x4000061fb0 pc=0x27f28
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000061fd0 sp=0x4000061fd0 pc=0x79004
created by runtime.gcenable
    /opt/my-apps/go/src/runtime/mgc.go:179 +0xac

goroutine 5 [finalizer wait]:
runtime.gopark(0x1a0?, 0xe13c20?, 0xc0?, 0x36?, 0x0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x4000060580 sp=0x4000060560 pc=0x47ee0
runtime.runfinq()
    /opt/my-apps/go/src/runtime/mfinal.go:193 +0x100 fp=0x40000607d0 sp=0x4000060580 pc=0x27050
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40000607d0 sp=0x40000607d0 pc=0x79004
created by runtime.createfing
    /opt/my-apps/go/src/runtime/mfinal.go:163 +0x80

goroutine 6 [chan send]:
runtime.gopark(0x696640?, 0x400023a968?, 0xb0?, 0xef?, 0x0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x400006eea0 sp=0x400006ee80 pc=0x47ee0
runtime.chansend(0x400008a5a0, 0x400006efb0, 0x1, 0x400?)
    /opt/my-apps/go/src/runtime/chan.go:259 +0x42c fp=0x400006ef30 sp=0x400006eea0 pc=0x155cc
runtime.chansend1(0x400011bc00?, 0x0?)
    /opt/my-apps/go/src/runtime/chan.go:145 +0x18 fp=0x400006ef60 sp=0x400006ef30 pc=0x15188
github.com/gogf/gf/util/grand.asyncProducingRandomBufferBytesLoop()
    /data/repo/golang/gopath/pkg/mod/github.com/gogf/gf@v1.16.9/util/grand/grand_buffer.go:45 +0xac fp=0x400006efd0 sp=0x400006ef60 pc=0x42243c
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x400006efd0 sp=0x400006efd0 pc=0x79004
created by github.com/gogf/gf/util/grand.init.0
    /data/repo/golang/gopath/pkg/mod/github.com/gogf/gf@v1.16.9/util/grand/grand_buffer.go:25 +0x24

goroutine 21 [GC worker (idle)]:
runtime.gopark(0x4000062f68?, 0x40004a4450?, 0x10?, 0x7?, 0x400044dec0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x4000062f40 sp=0x4000062f20 pc=0x47ee0
runtime.gcBgMarkWorker()
    /opt/my-apps/go/src/runtime/mgc.go:1275 +0xe4 fp=0x4000062fd0 sp=0x4000062f40 pc=0x29d64
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000062fd0 sp=0x4000062fd0 pc=0x79004
created by runtime.gcBgMarkStartWorkers
    /opt/my-apps/go/src/runtime/mgc.go:1199 +0x28

goroutine 18 [chan receive]:
runtime.gopark(0x4000286060?, 0x42c01c?, 0x60?, 0x99?, 0x400000e600?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x400005c6c0 sp=0x400005c6a0 pc=0x47ee0
runtime.chanrecv(0x4000286000, 0x0, 0x1)
    /opt/my-apps/go/src/runtime/chan.go:583 +0x468 fp=0x400005c750 sp=0x400005c6c0 pc=0x16338
runtime.chanrecv1(0x400003ef80?, 0x154?)
    /opt/my-apps/go/src/runtime/chan.go:442 +0x14 fp=0x400005c780 sp=0x400005c750 pc=0x15e94
github.com/gogf/gf/os/gtimer.(*Timer).loop.func1()
    /data/repo/golang/gopath/pkg/mod/github.com/gogf/gf@v1.16.9/os/gtimer/gtimer_timer_loop.go:21 +0x70 fp=0x400005c7d0 sp=0x400005c780 pc=0x42be40
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x400005c7d0 sp=0x400005c7d0 pc=0x79004
created by github.com/gogf/gf/os/gtimer.(*Timer).loop
    /data/repo/golang/gopath/pkg/mod/github.com/gogf/gf@v1.16.9/os/gtimer/gtimer_timer_loop.go:13 +0x5c

goroutine 8 [chan receive]:
runtime.gopark(0x40000636a8?, 0x400011c1e0?, 0xb0?, 0x6d?, 0x40000636f8?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x4000063680 sp=0x4000063660 pc=0x47ee0
runtime.chanrecv(0x40000968a0, 0x0, 0x1)
    /opt/my-apps/go/src/runtime/chan.go:583 +0x468 fp=0x4000063710 sp=0x4000063680 pc=0x16338
runtime.chanrecv1(0x4000463030?, 0x1?)
    /opt/my-apps/go/src/runtime/chan.go:442 +0x14 fp=0x4000063740 sp=0x4000063710 pc=0x15e94
github.com/gogf/gf/container/gqueue.(*Queue).asyncLoopFromListToChannel(0x40004a4390)
    /data/repo/golang/gopath/pkg/mod/github.com/gogf/gf@v1.16.9/container/gqueue/gqueue.go:70 +0x70 fp=0x40000637b0 sp=0x4000063740 pc=0x443360
github.com/gogf/gf/container/gqueue.New.func1()
    /data/repo/golang/gopath/pkg/mod/github.com/gogf/gf@v1.16.9/container/gqueue/gqueue.go:56 +0x28 fp=0x40000637d0 sp=0x40000637b0 pc=0x4432b8
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40000637d0 sp=0x40000637d0 pc=0x79004
created by github.com/gogf/gf/container/gqueue.New
    /data/repo/golang/gopath/pkg/mod/github.com/gogf/gf@v1.16.9/container/gqueue/gqueue.go:56 +0x240

goroutine 9 [syscall]:
syscall.Syscall6(0x30?, 0x0?, 0x4000537ae8?, 0x47f80?, 0x4000537b18?, 0x158fc?, 0x4000537b00?)
    /opt/my-apps/go/src/syscall/syscall_linux.go:91 +0x2c fp=0x4000537ac0 sp=0x4000537a30 pc=0xc695c
syscall.Syscall6(0x16, 0x7, 0x4000537bd0, 0x7, 0xffffffffffffffff, 0x0, 0x0)
    <autogenerated>:1 +0x2c fp=0x4000537b10 sp=0x4000537ac0 pc=0xc756c
golang.org/x/sys/unix.EpollWait(0x0?, {0x4000537bd0?, 0x4000537c28?, 0x1684c?}, 0x0?)
    /data/repo/golang/gopath/pkg/mod/golang.org/x/sys@v0.7.0/unix/zsyscall_linux_arm64.go:56 +0x4c fp=0x4000537b80 sp=0x4000537b10 pc=0x2c432c
github.com/fsnotify/fsnotify.(*fdPoller).wait(0x40000bb2c0)
    /data/repo/golang/gopath/pkg/mod/github.com/fsnotify/fsnotify@v1.5.4/inotify_poller.go:86 +0x5c fp=0x4000537c60 sp=0x4000537b80 pc=0x442a5c
github.com/fsnotify/fsnotify.(*Watcher).readEvents(0x40000958b0)
    /data/repo/golang/gopath/pkg/mod/github.com/fsnotify/fsnotify@v1.5.4/inotify.go:206 +0x250 fp=0x4000547fb0 sp=0x4000537c60 pc=0x441d10
github.com/fsnotify/fsnotify.NewWatcher.func1()
    /data/repo/golang/gopath/pkg/mod/github.com/fsnotify/fsnotify@v1.5.4/inotify.go:60 +0x28 fp=0x4000547fd0 sp=0x4000547fb0 pc=0x441148
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000547fd0 sp=0x4000547fd0 pc=0x79004
created by github.com/fsnotify/fsnotify.NewWatcher
    /data/repo/golang/gopath/pkg/mod/github.com/fsnotify/fsnotify@v1.5.4/inotify.go:60 +0x190

goroutine 10 [select]:
runtime.gopark(0x400006ff98?, 0x3?, 0xc8?, 0x86?, 0x400006ff3a?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x400006fdd0 sp=0x400006fdb0 pc=0x47ee0
runtime.selectgo(0x400006ff98, 0x400006ff34, 0x4000463100?, 0x0, 0x40004a5d70?, 0x1)
    /opt/my-apps/go/src/runtime/select.go:327 +0x68c fp=0x400006fee0 sp=0x400006fdd0 pc=0x584bc
github.com/gogf/gf/os/gfsnotify.(*Watcher).watchLoop.func1()
    /data/repo/golang/gopath/pkg/mod/github.com/gogf/gf@v1.16.9/os/gfsnotify/gfsnotify_watcher_loop.go:19 +0x90 fp=0x400006ffd0 sp=0x400006fee0 pc=0x445a10
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x400006ffd0 sp=0x400006ffd0 pc=0x79004
created by github.com/gogf/gf/os/gfsnotify.(*Watcher).watchLoop
    /data/repo/golang/gopath/pkg/mod/github.com/gogf/gf@v1.16.9/os/gfsnotify/gfsnotify_watcher_loop.go:17 +0x5c

goroutine 11 [chan receive]:
runtime.gopark(0x1?, 0x0?, 0xc8?, 0xae?, 0x1ca7c?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x40004aae40 sp=0x40004aae20 pc=0x47ee0
runtime.chanrecv(0x400008aa20, 0x40004aafb8, 0x1)
    /opt/my-apps/go/src/runtime/chan.go:583 +0x468 fp=0x40004aaed0 sp=0x40004aae40 pc=0x16338
runtime.chanrecv1(0x40004a4450?, 0x4000038d80?)
    /opt/my-apps/go/src/runtime/chan.go:442 +0x14 fp=0x40004aaf00 sp=0x40004aaed0 pc=0x15e94
github.com/gogf/gf/container/gqueue.(*Queue).Pop(...)
    /data/repo/golang/gopath/pkg/mod/github.com/gogf/gf@v1.16.9/container/gqueue/gqueue.go:111
github.com/gogf/gf/os/gfsnotify.(*Watcher).eventLoop.func1()
    /data/repo/golang/gopath/pkg/mod/github.com/gogf/gf@v1.16.9/os/gfsnotify/gfsnotify_watcher_loop.go:48 +0x40 fp=0x40004aafd0 sp=0x40004aaf00 pc=0x445d40
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40004aafd0 sp=0x40004aafd0 pc=0x79004
created by github.com/gogf/gf/os/gfsnotify.(*Watcher).eventLoop
    /data/repo/golang/gopath/pkg/mod/github.com/gogf/gf@v1.16.9/os/gfsnotify/gfsnotify_watcher_loop.go:46 +0x5c

goroutine 13 [GC worker (idle)]:
runtime.gopark(0xe13140?, 0xe13140?, 0xe0?, 0xfe?, 0x400046feec?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x40004aa740 sp=0x40004aa720 pc=0x47ee0
runtime.gcBgMarkWorker()
    /opt/my-apps/go/src/runtime/mgc.go:1275 +0xe4 fp=0x40004aa7d0 sp=0x40004aa740 pc=0x29d64
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40004aa7d0 sp=0x40004aa7d0 pc=0x79004
created by runtime.gcBgMarkStartWorkers
    /opt/my-apps/go/src/runtime/mgc.go:1199 +0x28

goroutine 122 [select]:
runtime.gopark(0x40002bbee8?, 0x2?, 0x0?, 0x0?, 0x40002bbeb4?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x40002bbd60 sp=0x40002bbd40 pc=0x47ee0
runtime.selectgo(0x40002bbee8, 0x40002bbeb0, 0x10?, 0x0, 0x7070e0910100402?, 0x1)
    /opt/my-apps/go/src/runtime/select.go:327 +0x68c fp=0x40002bbe70 sp=0x40002bbd60 pc=0x584bc
google.golang.org/grpc/internal/transport.(*controlBuffer).get(0x4000094280, 0x1)
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/controlbuf.go:416 +0x14c fp=0x40002bbf10 sp=0x40002bbe70 pc=0x347f3c
google.golang.org/grpc/internal/transport.(*loopyWriter).run(0x4000286360)
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/controlbuf.go:534 +0x78 fp=0x40002bbf70 sp=0x40002bbf10 pc=0x348748
google.golang.org/grpc/internal/transport.NewServerTransport.func2()
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/http2_server.go:336 +0xcc fp=0x40002bbfd0 sp=0x40002bbf70 pc=0x35d58c
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40002bbfd0 sp=0x40002bbfd0 pc=0x79004
created by google.golang.org/grpc/internal/transport.NewServerTransport
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/http2_server.go:333 +0x14cc

goroutine 36 [GC worker (idle)]:
runtime.gopark(0x400?, 0x400?, 0x0?, 0x0?, 0x79004?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x4000062740 sp=0x4000062720 pc=0x47ee0
runtime.gcBgMarkWorker()
    /opt/my-apps/go/src/runtime/mgc.go:1275 +0xe4 fp=0x40000627d0 sp=0x4000062740 pc=0x29d64
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40000627d0 sp=0x40000627d0 pc=0x79004
created by runtime.gcBgMarkStartWorkers
    /opt/my-apps/go/src/runtime/mgc.go:1199 +0x28

goroutine 14 [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x40004ab740 sp=0x40004ab720 pc=0x47ee0
runtime.gcBgMarkWorker()
    /opt/my-apps/go/src/runtime/mgc.go:1275 +0xe4 fp=0x40004ab7d0 sp=0x40004ab740 pc=0x29d64
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40004ab7d0 sp=0x40004ab7d0 pc=0x79004
created by runtime.gcBgMarkStartWorkers
    /opt/my-apps/go/src/runtime/mgc.go:1199 +0x28

goroutine 37 [GC worker (idle)]:
runtime.gopark(0x2bc9748c1c5?, 0x3?, 0x54?, 0xf7?, 0x0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x40004a6740 sp=0x40004a6720 pc=0x47ee0
runtime.gcBgMarkWorker()
    /opt/my-apps/go/src/runtime/mgc.go:1275 +0xe4 fp=0x40004a67d0 sp=0x40004a6740 pc=0x29d64
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40004a67d0 sp=0x40004a67d0 pc=0x79004
created by runtime.gcBgMarkStartWorkers
    /opt/my-apps/go/src/runtime/mgc.go:1199 +0x28

goroutine 15 [GC worker (idle)]:
runtime.gopark(0x2bc97482282?, 0x3?, 0xfb?, 0x7b?, 0x0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x40004abf40 sp=0x40004abf20 pc=0x47ee0
runtime.gcBgMarkWorker()
    /opt/my-apps/go/src/runtime/mgc.go:1275 +0xe4 fp=0x40004abfd0 sp=0x40004abf40 pc=0x29d64
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40004abfd0 sp=0x40004abfd0 pc=0x79004
created by runtime.gcBgMarkStartWorkers
    /opt/my-apps/go/src/runtime/mgc.go:1199 +0x28

goroutine 22 [GC worker (idle)]:
runtime.gopark(0x2bc97433e63?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x400005cf40 sp=0x400005cf20 pc=0x47ee0
runtime.gcBgMarkWorker()
    /opt/my-apps/go/src/runtime/mgc.go:1275 +0xe4 fp=0x400005cfd0 sp=0x400005cf40 pc=0x29d64
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x400005cfd0 sp=0x400005cfd0 pc=0x79004
created by runtime.gcBgMarkStartWorkers
    /opt/my-apps/go/src/runtime/mgc.go:1199 +0x28

goroutine 38 [GC worker (idle)]:
runtime.gopark(0x2bc97476b67?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x40004a6f40 sp=0x40004a6f20 pc=0x47ee0
runtime.gcBgMarkWorker()
    /opt/my-apps/go/src/runtime/mgc.go:1275 +0xe4 fp=0x40004a6fd0 sp=0x40004a6f40 pc=0x29d64
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40004a6fd0 sp=0x40004a6fd0 pc=0x79004
created by runtime.gcBgMarkStartWorkers
    /opt/my-apps/go/src/runtime/mgc.go:1199 +0x28

goroutine 39 [select]:
runtime.gopark(0x400056bee8?, 0x2?, 0x0?, 0x0?, 0x400056beb4?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x400056bd60 sp=0x400056bd40 pc=0x47ee0
runtime.selectgo(0x400056bee8, 0x400056beb0, 0x0?, 0x0, 0x0?, 0x1)
    /opt/my-apps/go/src/runtime/select.go:327 +0x68c fp=0x400056be70 sp=0x400056bd60 pc=0x584bc
google.golang.org/grpc/internal/transport.(*controlBuffer).get(0x4000095c70, 0x1)
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/controlbuf.go:416 +0x14c fp=0x400056bf10 sp=0x400056be70 pc=0x347f3c
google.golang.org/grpc/internal/transport.(*loopyWriter).run(0x4000562000)
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/controlbuf.go:534 +0x78 fp=0x400056bf70 sp=0x400056bf10 pc=0x348748
google.golang.org/grpc/internal/transport.NewServerTransport.func2()
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/http2_server.go:336 +0xcc fp=0x400056bfd0 sp=0x400056bf70 pc=0x35d58c
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x400056bfd0 sp=0x400056bfd0 pc=0x79004
created by google.golang.org/grpc/internal/transport.NewServerTransport
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/http2_server.go:333 +0x14cc

goroutine 40 [select]:
runtime.gopark(0x400029ef60?, 0x4?, 0x98?, 0xed?, 0x400029eea8?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x400029ed10 sp=0x400029ecf0 pc=0x47ee0
runtime.selectgo(0x400029ef60, 0x400029eea0, 0x0?, 0x0, 0x0?, 0x1)
    /opt/my-apps/go/src/runtime/select.go:327 +0x68c fp=0x400029ee20 sp=0x400029ed10 pc=0x584bc
google.golang.org/grpc/internal/transport.(*http2Server).keepalive(0x40004fc1a0)
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/http2_server.go:1144 +0x188 fp=0x400029efb0 sp=0x400029ee20 pc=0x3640a8
google.golang.org/grpc/internal/transport.NewServerTransport.func4()
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/http2_server.go:344 +0x28 fp=0x400029efd0 sp=0x400029efb0 pc=0x35d488
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x400029efd0 sp=0x400029efd0 pc=0x79004
created by google.golang.org/grpc/internal/transport.NewServerTransport
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/http2_server.go:344 +0x150c

goroutine 41 [IO wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x4000070a30 sp=0x4000070a10 pc=0x47ee0
runtime.netpollblock(0x0?, 0xffffffff?, 0xff?)
    /opt/my-apps/go/src/runtime/netpoll.go:527 +0x158 fp=0x4000070a70 sp=0x4000070a30 pc=0x40c28
internal/poll.runtime_pollWait(0x7f844c2e08, 0x72)
    /opt/my-apps/go/src/runtime/netpoll.go:306 +0xa0 fp=0x4000070aa0 sp=0x4000070a70 pc=0x73340
internal/poll.(*pollDesc).wait(0x4000168000?, 0x40004f4000?, 0x0)
    /opt/my-apps/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x4000070ad0 sp=0x4000070aa0 pc=0xe0278
internal/poll.(*pollDesc).waitRead(...)
    /opt/my-apps/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x4000168000, {0x40004f4000, 0x8000, 0x8000})
    /opt/my-apps/go/src/internal/poll/fd_unix.go:167 +0x200 fp=0x4000070b70 sp=0x4000070ad0 pc=0xe15c0
net.(*netFD).Read(0x4000168000, {0x40004f4000?, 0x40004fe000?, 0x10401?})
    /opt/my-apps/go/src/net/fd_posix.go:55 +0x28 fp=0x4000070bc0 sp=0x4000070b70 pc=0x1e7308
net.(*conn).Read(0x4000112058, {0x40004f4000?, 0x4000070c48?, 0x1c830?})
    /opt/my-apps/go/src/net/net.go:183 +0x34 fp=0x4000070c10 sp=0x4000070bc0 pc=0x1f80e4
net.(*TCPConn).Read(0x4000070cb8?, {0x40004f4000?, 0x10401?, 0x0?})
    <autogenerated>:1 +0x2c fp=0x4000070c40 sp=0x4000070c10 pc=0x20901c
bufio.(*Reader).Read(0x400008ad20, {0x40004fe040, 0x9, 0x400012f170?})
    /opt/my-apps/go/src/bufio/bufio.go:237 +0x1d8 fp=0x4000070c80 sp=0x4000070c40 pc=0x16afd8
io.ReadAtLeast({0x8b2e80, 0x400008ad20}, {0x40004fe040, 0x9, 0x9}, 0x9)
    /opt/my-apps/go/src/io/io.go:332 +0xa0 fp=0x4000070cd0 sp=0x4000070c80 pc=0xbbc80
io.ReadFull(...)
    /opt/my-apps/go/src/io/io.go:351
golang.org/x/net/http2.readFrameHeader({0x40004fe040?, 0x9?, 0x40004a85c8?}, {0x8b2e80?, 0x400008ad20?})
    /data/repo/golang/gopath/pkg/mod/golang.org/x/net@v0.6.0/http2/frame.go:237 +0x58 fp=0x4000070d20 sp=0x4000070cd0 pc=0x33a978
golang.org/x/net/http2.(*Framer).ReadFrame(0x40004fe000)
    /data/repo/golang/gopath/pkg/mod/golang.org/x/net@v0.6.0/http2/frame.go:498 +0x80 fp=0x4000070dd0 sp=0x4000070d20 pc=0x33b140
google.golang.org/grpc/internal/transport.(*http2Server).HandleStreams(0x40004fc1a0, 0x0?, 0x0?)
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/http2_server.go:631 +0x114 fp=0x4000070ef0 sp=0x4000070dd0 pc=0x360294
google.golang.org/grpc.(*Server).serveStreams(0x40001b25a0, {0x8bc360?, 0x40004fc1a0})
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:949 +0x174 fp=0x4000070f70 sp=0x4000070ef0 pc=0x3c3d44
google.golang.org/grpc.(*Server).handleRawConn.func1()
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:891 +0x44 fp=0x4000070fd0 sp=0x4000070f70 pc=0x3c3644
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000070fd0 sp=0x4000070fd0 pc=0x79004
created by google.golang.org/grpc.(*Server).handleRawConn
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:890 +0x178

goroutine 124 [IO wait]:
runtime.gopark(0x400012a390?, 0x40001280a0?, 0xe?, 0x0?, 0x10000128095?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x4000175a30 sp=0x4000175a10 pc=0x47ee0
runtime.netpollblock(0x0?, 0xffffffff?, 0xff?)
    /opt/my-apps/go/src/runtime/netpoll.go:527 +0x158 fp=0x4000175a70 sp=0x4000175a30 pc=0x40c28
internal/poll.runtime_pollWait(0x7f844c2d18, 0x72)
    /opt/my-apps/go/src/runtime/netpoll.go:306 +0xa0 fp=0x4000175aa0 sp=0x4000175a70 pc=0x73340
internal/poll.(*pollDesc).wait(0x4000484000?, 0x40000ac000?, 0x0)
    /opt/my-apps/go/src/internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x4000175ad0 sp=0x4000175aa0 pc=0xe0278
internal/poll.(*pollDesc).waitRead(...)
    /opt/my-apps/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x4000484000, {0x40000ac000, 0x8000, 0x8000})
    /opt/my-apps/go/src/internal/poll/fd_unix.go:167 +0x200 fp=0x4000175b70 sp=0x4000175ad0 pc=0xe15c0
net.(*netFD).Read(0x4000484000, {0x40000ac000?, 0x4000134588?, 0x800010601?})
    /opt/my-apps/go/src/net/fd_posix.go:55 +0x28 fp=0x4000175bc0 sp=0x4000175b70 pc=0x1e7308
net.(*conn).Read(0x4000010008, {0x40000ac000?, 0x0?, 0x0?})
    /opt/my-apps/go/src/net/net.go:183 +0x34 fp=0x4000175c10 sp=0x4000175bc0 pc=0x1f80e4
net.(*TCPConn).Read(0x4000175c68?, {0x40000ac000?, 0x2c48f41c889?, 0x30000100000000?})
    <autogenerated>:1 +0x2c fp=0x4000175c40 sp=0x4000175c10 pc=0x20901c
bufio.(*Reader).Read(0x400008a180, {0x40004fe120, 0x9, 0xe13140?})
    /opt/my-apps/go/src/bufio/bufio.go:237 +0x1d8 fp=0x4000175c80 sp=0x4000175c40 pc=0x16afd8
io.ReadAtLeast({0x8b2e80, 0x400008a180}, {0x40004fe120, 0x9, 0x9}, 0x9)
    /opt/my-apps/go/src/io/io.go:332 +0xa0 fp=0x4000175cd0 sp=0x4000175c80 pc=0xbbc80
io.ReadFull(...)
    /opt/my-apps/go/src/io/io.go:351
golang.org/x/net/http2.readFrameHeader({0x40004fe120?, 0x9?, 0x4000036498?}, {0x8b2e80?, 0x400008a180?})
    /data/repo/golang/gopath/pkg/mod/golang.org/x/net@v0.6.0/http2/frame.go:237 +0x58 fp=0x4000175d20 sp=0x4000175cd0 pc=0x33a978
golang.org/x/net/http2.(*Framer).ReadFrame(0x40004fe0e0)
    /data/repo/golang/gopath/pkg/mod/golang.org/x/net@v0.6.0/http2/frame.go:498 +0x80 fp=0x4000175dd0 sp=0x4000175d20 pc=0x33b140
google.golang.org/grpc/internal/transport.(*http2Server).HandleStreams(0x4000602340, 0x0?, 0x0?)
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/http2_server.go:631 +0x114 fp=0x4000175ef0 sp=0x4000175dd0 pc=0x360294
google.golang.org/grpc.(*Server).serveStreams(0x40001b25a0, {0x8bc360?, 0x4000602340})
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:949 +0x174 fp=0x4000175f70 sp=0x4000175ef0 pc=0x3c3d44
google.golang.org/grpc.(*Server).handleRawConn.func1()
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:891 +0x44 fp=0x4000175fd0 sp=0x4000175f70 pc=0x3c3644
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x4000175fd0 sp=0x4000175fd0 pc=0x79004
created by google.golang.org/grpc.(*Server).handleRawConn
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/server.go:890 +0x178

goroutine 123 [select]:
runtime.gopark(0x40002a7f60?, 0x4?, 0x60?, 0xcf?, 0x40002a7ea8?)
    /opt/my-apps/go/src/runtime/proc.go:381 +0xe0 fp=0x40002a7d10 sp=0x40002a7cf0 pc=0x47ee0
runtime.selectgo(0x40002a7f60, 0x40002a7ea0, 0x40002a7e68?, 0x0, 0x0?, 0x1)
    /opt/my-apps/go/src/runtime/select.go:327 +0x68c fp=0x40002a7e20 sp=0x40002a7d10 pc=0x584bc
google.golang.org/grpc/internal/transport.(*http2Server).keepalive(0x4000602340)
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/http2_server.go:1144 +0x188 fp=0x40002a7fb0 sp=0x40002a7e20 pc=0x3640a8
google.golang.org/grpc/internal/transport.NewServerTransport.func4()
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/http2_server.go:344 +0x28 fp=0x40002a7fd0 sp=0x40002a7fb0 pc=0x35d488
runtime.goexit()
    /opt/my-apps/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x40002a7fd0 sp=0x40002a7fd0 pc=0x79004
created by google.golang.org/grpc/internal/transport.NewServerTransport
    /data/repo/golang/gopath/pkg/mod/google.golang.org/grpc@v1.53.0/internal/transport/http2_server.go:344 +0x150c
TotallyGamerJet commented 1 year ago

I'll need some more information.

  1. Does it happen with CGO_ENABLED=0 & 1?
  2. Do you have a reproducible case you can show?
  3. Are you using callbacks or just calling into C functions?

It looks like a null pointer dereference. But without any code I can't tell you why

jiftle commented 1 year ago

I'll need some more information.

1. Does it happen with CGO_ENABLED=0 & 1?

amd64 and aarch64 will panic together. CGO_ENABLED=0, this is my Makefile

linux-arm64:
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=arm64 \
go build -ldflags \
" -s -w \
-X '${AppName}/version.BuildTime=${BUILD_TIME}' \
-X '${AppName}/version.Version=${Version}' \
-X '${AppName}/version.Author=${BUILD_AUTHOR}' \
-X '${AppName}/version.Hash=${BUILD_HASH}' \
" \
-o build/bin/linux/arm64/${OutAppName}
2. Do you have a reproducible case you can show?

var nOpen    func() int32

libc, err := purego.Dlopen(libname, purego.RTLD_NOW|purego.RTLD_GLOBAL) if err != nil { g.Log().Warningf("lib load fail, %v", err) return }

g.Log().Infof("lib [%v] open success.", libname) purego.RegisterLibFunc(&nOpen, libc, "LibWrap_Open")

func Open() (err error) { defer func() { if err := recover(); err != nil { g.Log().Errorf("lib_linux Open panic, %v", err) // it isn't work } }() if connected { err = fmt.Errorf("device is connected") return } g.Log().Debugf("nOpen, # %p", &nOpen) ret := nOpen() // it is panic g.Log().Debugf("nOpen, > ret= %v", ret) if ret != 0 { err = fmt.Errorf("ret=%v", ret) return } connected = true return }

lib, .h

ifdef __cplusplus

extern "C" { int LibWrap_Open(); } ``

3. Are you using callbacks or just calling into C functions?

It is just C function call, but I think my C function maybe has bug. I will try look lib code.

 note: my c code is no problem.

It looks like a null pointer dereference. But without any code I can't tell you why

child process. ● nhardserv.service - nhardserv Loaded: loaded (/lib/systemd/system/nhardserv.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2023-09-27 17:20:08 CST; 6s ago Main PID: 366815 (nhardserv) Tasks: 47 (limit: 33423) Memory: 26.2M CGroup: /system.slice/nhardserv.service ├─366815 /usr/local/nhardserv/nctdevdaemon ├─366832 ./libserv

jiftle commented 1 year ago

segmentation violation !!! this maybe bug.

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

runtime stack:
runtime.throw({0xc7d0a3?, 0x0?})
    /opt/my-apps/go/src/runtime/panic.go:1047 +0x5d fp=0x7f2e258debf8 sp=0x7f2e258debc8 pc=0x436efd
runtime.sigpanic()
    /opt/my-apps/go/src/runtime/signal_unix.go:821 +0x3e9 fp=0x7f2e258dec58 sp=0x7f2e258debf8 pc=0x44db49

goroutine 117 [syscall]:
runtime.cgocall(0xa691e0, 0xc00021e0b0)
    /opt/my-apps/go/src/runtime/cgocall.go:157 +0x5c fp=0xc000152f30 sp=0xc000152ef8 pc=0x4051dc
github.com/ebitengine/purego.RegisterFunc.func1({0x12f5788?, 0x0?, 0x0?})
    /data/repo/golang/gopath/pkg/mod/github.com/ebitengine/purego@v0.5.0-rc.2/func.go:249 +0xa31 fp=0xc0001532a0 sp=0xc000152f30 pc=0xa68951
reflect.callReflect(0xc000509560, 0xc000153808, 0xc0001536e0, 0xc0001536e8)
    /opt/my-apps/go/src/reflect/value.go:772 +0x568 fp=0xc000153690 sp=0xc0001532a0 pc=0x49f048
reflect.callReflect(0xc000509560, 0xc000153808, 0xc0001536e0, 0xc0001536e8)
    <autogenerated>:1 +0x4b fp=0xc0001536c0 sp=0xc000153690 pc=0x4b206b
hajimehoshi commented 1 year ago

Does this crash happen with CGO_ENABLED=1?

jiftle commented 1 year ago

I'm sorry, the season is found. This is my c lib bug. Thanks for everyone.