Skip to content

How to stop receiving? #13

@keeword

Description

@keeword

NewRawSocketRelayWithRelayConn create a goroutine to receive packets, but do not provide method to stop it.
If I call RawSocketRelay.Stop, then I got panic:

unexpected fault address 0x7f2771980008
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x1 addr=0x7f2771980008 pc=0x4cace4]

goroutine 19 [running, locked to thread]:
runtime.throw({0x5b971f?, 0x41a72d?})
        /usr/local/go/src/runtime/panic.go:1047 +0x5d fp=0xc000065bd8 sp=0xc000065ba8 pc=0x437e7d
runtime.sigpanic()
        /usr/local/go/src/runtime/signal_unix.go:855 +0x28a fp=0xc000065c38 sp=0xc000065bd8 pc=0x44e24a
github.com/google/gopacket/afpacket.(*v3wrapper).getStatus(0xc000065c60?)
        /root/go/pkg/mod/github.com/google/gopacket@v1.1.19/afpacket/header.go:161 +0x4 fp=0xc000065c40 sp=0xc000065c38 pc=0x4cace4
github.com/google/gopacket/afpacket.(*TPacket).pollForFirstPacket(0xc0001e4400, {0x605548, 0xc0001e44c0})
        /root/go/pkg/mod/github.com/google/gopacket@v1.1.19/afpacket/afpacket.go:455 +0x62 fp=0xc000065c90 sp=0xc000065c40 pc=0x4ca5c2
github.com/google/gopacket/afpacket.(*TPacket).ZeroCopyReadPacketData(0xc0001e4400)
        /root/go/pkg/mod/github.com/google/gopacket@v1.1.19/afpacket/afpacket.go:304 +0x1a5 fp=0xc000065d28 sp=0xc000065c90 pc=0x4c9a65
github.com/google/gopacket/afpacket.(*TPacket).ReadPacketDataTo(...)
        /root/go/pkg/mod/github.com/google/gopacket@v1.1.19/afpacket/afpacket.go:405
github.com/hujun-open/etherconn.(*afConn).ReadPacketData(0xc0001129d0)
        /root/go/pkg/mod/github.com/hujun-open/etherconn@v0.6.2-0.20231012152539-8b44fdd29231/afconn_linux.go:34 +0xe9 fp=0xc000065e40 sp=0xc000065d28 pc=0x54e509
github.com/hujun-open/etherconn.(*RawSocketRelay).recv(0xc000129180, {0x6026b8, 0xc000100230})
        /root/go/pkg/mod/github.com/hujun-open/etherconn@v0.6.2-0.20231012152539-8b44fdd29231/rawrelay.go:318 +0x11d fp=0xc000065fb8 sp=0xc000065e40 pc=0x55081d
github.com/hujun-open/etherconn.NewRawSocketRelayWithRelayConn.func1()
        /root/go/pkg/mod/github.com/hujun-open/etherconn@v0.6.2-0.20231012152539-8b44fdd29231/rawrelay.go:123 +0x2e fp=0xc000065fe0 sp=0xc000065fb8 pc=0x5500ae
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc000065fe8 sp=0xc000065fe0 pc=0x4679c1
created by github.com/hujun-open/etherconn.NewRawSocketRelayWithRelayConn
        /root/go/pkg/mod/github.com/hujun-open/etherconn@v0.6.2-0.20231012152539-8b44fdd29231/rawrelay.go:123 +0x64d

So, how to stop receiving?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions