tidwall/evio

Conn wake write block

qqskqsa opened this issue · 1 comments

goroutine 8 [IO wait]:
internal/poll.runtime_pollWait(0x7faa33483bc8, 0x72, 0xffffffffffffffff)
C:/Go/src/runtime/netpoll.go:182 +0x56
internal/poll.(*pollDesc).wait(0xc0000ea218, 0x72, 0x1000, 0x1000, 0xffffffffffffffff)
C:/Go/src/internal/poll/fd_poll_runtime.go:87 +0x9b
internal/poll.(*pollDesc).waitRead(...)
C:/Go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc0000ea200, 0xc0001e8000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
C:/Go/src/internal/poll/fd_unix.go:169 +0x19b
net.(*netFD).Read(0xc0000ea200, 0xc0001e8000, 0x1000, 0x1000, 0x0, 0xc006875938, 0x6ba3ea)
C:/Go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc00000e090, 0xc0001e8000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
C:/Go/src/net/net.go:177 +0x69
net/http.(*connReader).Read(0xc00007f890, 0xc0001e8000, 0x1000, 0x1000, 0x8bd6a8, 0xc006875a10, 0x3ae0042cdee)
C:/Go/src/net/http/server.go:787 +0x107
bufio.(*Reader).fill(0xc000060a20)
C:/Go/src/bufio/bufio.go:100 +0x10f
bufio.(*Reader).ReadSlice(0xc000060a20, 0xc006875a0a, 0x7faa32b2e098, 0xc006875b00, 0x40b7a9, 0xc015940400, 0x100)
C:/Go/src/bufio/bufio.go:356 +0x3d
bufio.(*Reader).ReadLine(0xc000060a20, 0xc006875b08, 0xc01c2a2a80, 0x7faa356f0d98, 0x0, 0x0, 0x89ebc0)
C:/Go/src/bufio/bufio.go:385 +0x34
net/textproto.(*Reader).readLineSlice(0xc01765f200, 0xc015940400, 0xc0000ea200, 0x0, 0x0, 0x42ba81)
C:/Go/src/net/textproto/reader.go:55 +0x6f
net/textproto.(*Reader).ReadLine(...)
C:/Go/src/net/textproto/reader.go:36
net/http.readRequest(0xc000060a20, 0x0, 0xc015940400, 0x0, 0x0)
C:/Go/src/net/http/request.go:968 +0x8d
net/http.(*conn).readRequest(0xc000099040, 0x959280, 0xc00005e840, 0x0, 0x0, 0x0)
C:/Go/src/net/http/server.go:967 +0x163
net/http.(*conn).serve(0xc000099040, 0x959280, 0xc00005e840)
C:/Go/src/net/http/server.go:1819 +0x6a8
created by net/http.(*Server).Serve
C:/Go/src/net/http/server.go:2884 +0x2f4

goroutine 24135 [syscall, 258 minutes]:
syscall.Syscall(0x1, 0xa, 0xc01090fdd8, 0x8, 0x1, 0xc01090fd58, 0xc01090fd58)
C:/Go/src/syscall/asm_linux_amd64.s:18 +0x5
syscall.write(0xa, 0xc01090fdd8, 0x8, 0x8, 0xc01090fde0, 0x8, 0x0)
C:/Go/src/syscall/zsyscall_linux_amd64.go:1005 +0x5a
syscall.Write(...)
C:/Go/src/syscall/syscall_unix.go:192
github.com/tidwall/evio/internal.(*Poll).Trigger(0xc0001054a0, 0x86d840, 0xc00012e630, 0x2, 0x2)
G:/gowork/pkg/mod/github.com/tidwall/evio@v1.0.2/internal/internal_linux.go:52 +0x3df
github.com/tidwall/evio.(*conn).Wake(0xc00012e630)
G:/gowork/pkg/mod/github.com/tidwall/evio@v1.0.2/evio_unix.go:49 +0x165
created by main.(*srv).tx
G:/gowork/src/gprs-server/server.go:231 +0x5d1

for me, it blocked when Tick is not implement

events.Tick = func() (delay time.Duration, action Action){
	log.Printf("tick")
	delay = time.Second
	return
}

@tidwall I think there is maybe need add default case on loop function, example: stdloopRun