evio icon indicating copy to clipboard operation
evio copied to clipboard

Conn wake write block

Open qqskqsa opened this issue 5 years ago • 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/[email protected]/internal/internal_linux.go:52 +0x3df github.com/tidwall/evio.(*conn).Wake(0xc00012e630) G:/gowork/pkg/mod/github.com/tidwall/[email protected]/evio_unix.go:49 +0x165 created by main.(*srv).tx G:/gowork/src/gprs-server/server.go:231 +0x5d1

qqskqsa avatar May 09 '19 09:05 qqskqsa

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

namkazt avatar Nov 05 '19 11:11 namkazt