Comments (7)
lock currently held by goroutine 30; xfideventread
Commit 8c0a09b.
PC=0x4649c1 m=0 sigcode=0
goroutine 0 [idle]:
runtime.futex()
/home/rogpeppe/go/src/runtime/sys_linux_amd64.s:552 +0x21
runtime.futexsleep(0xc000032500?, 0x0?, 0x0?)
/home/rogpeppe/go/src/runtime/os_linux.go:56 +0x36
runtime.notesleep(0x6e7250)
/home/rogpeppe/go/src/runtime/lock_futex.go:159 +0x87
runtime.mPark()
/home/rogpeppe/go/src/runtime/proc.go:1432 +0x2a
runtime.stopm()
/home/rogpeppe/go/src/runtime/proc.go:2402 +0x78
runtime.findrunnable()
/home/rogpeppe/go/src/runtime/proc.go:2978 +0x865
runtime.schedule()
/home/rogpeppe/go/src/runtime/proc.go:3361 +0x239
runtime.goschedImpl(0xc00008a340)
/home/rogpeppe/go/src/runtime/proc.go:3525 +0xc5
runtime.gosched_m(0xc00008a340?)
/home/rogpeppe/go/src/runtime/proc.go:3533 +0x31
runtime.mcall()
/home/rogpeppe/go/src/runtime/asm_amd64.s:433 +0x43
goroutine 1 [chan receive, 38 minutes]:
main.main()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:225 +0xd3c
goroutine 5 [sleep]:
time.Sleep(0x2540be400)
/home/rogpeppe/go/src/runtime/time.go:194 +0x12e
main.init.0.func1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:793 +0x35
created by main.init.0
/home/rogpeppe/other/9fans/cmd/acme/acme.go:791 +0x25
goroutine 7 [chan receive, 38 minutes]:
main.main.func5()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:117 +0xb9
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:116 +0x6af
goroutine 50 [chan send]:
9fans.net/go/draw.mouseproc(0x0?, 0xc0000ae000, 0x4c10ea?, 0x0?)
/home/rogpeppe/other/9fans/draw/mouse.go:63 +0x5c
created by 9fans.net/go/draw.(*Display).InitMouse
/home/rogpeppe/other/9fans/draw/mouse.go:49 +0x12e
goroutine 51 [IO wait]:
internal/poll.runtime_pollWait(0x7f7fc8114b38, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc0000121e0?, 0xc0000bf9cc?, 0x1)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc0000121e0, {0xc0000bf9cc, 0x4, 0x4})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
os.(*File).read(...)
/home/rogpeppe/go/src/os/file_posix.go:31
os.(*File).Read(0xc0000bc0c0, {0xc0000bf9cc?, 0xc000114af0?, 0x44a972?})
/home/rogpeppe/go/src/os/file.go:119 +0x5e
io.ReadAtLeast({0x5ed880, 0xc0000bc0c0}, {0xc0000bf9cc, 0x4, 0x4}, 0x4)
/home/rogpeppe/go/src/io/io.go:331 +0x9a
io.ReadFull(...)
/home/rogpeppe/go/src/io/io.go:350
9fans.net/go/draw/drawfcall.ReadMsg({0x5ed880, 0xc0000bc0c0})
/home/rogpeppe/other/9fans/draw/drawfcall/msg.go:232 +0x59
9fans.net/go/draw/drawfcall.(*Conn).RPC(0xc00009e0a0, 0xc000114d28, 0xc0001f0240)
/home/rogpeppe/other/9fans/draw/drawfcall/mux.go:93 +0x425
9fans.net/go/draw/drawfcall.(*Conn).ReadKbd(0x0?)
/home/rogpeppe/other/9fans/draw/drawfcall/mux.go:156 +0x7c
9fans.net/go/draw.kbdproc(0xc0000ae000, 0x0?)
/home/rogpeppe/other/9fans/draw/keyboard.go:43 +0x48
created by 9fans.net/go/draw.(*Display).InitKeyboard
/home/rogpeppe/other/9fans/draw/keyboard.go:37 +0x8a
goroutine 52 [IO wait, 3 minutes]:
internal/poll.runtime_pollWait(0x7f7fc8114798, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc0000f8080?, 0xc00002a080?, 0x0)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc0000f8080, {0xc00002a080, 0x4, 0x80})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0000f8080, {0xc00002a080?, 0x101c000406078?, 0x7f7fef64e6f0?})
/home/rogpeppe/go/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc0000fa000, {0xc00002a080?, 0xc000110b28?, 0x44a972?})
/home/rogpeppe/go/src/net/net.go:183 +0x45
io.ReadAtLeast({0x5ed820, 0xc0000fa000}, {0xc00002a080, 0x4, 0x80}, 0x4)
/home/rogpeppe/go/src/io/io.go:331 +0x9a
io.ReadFull(...)
/home/rogpeppe/go/src/io/io.go:350
9fans.net/go/plan9.ReadFcall({0x5ed820, 0xc0000fa000})
/home/rogpeppe/other/9fans/plan9/fcall.go:421 +0x5b
9fans.net/go/plan9/client.(*conn).read(0xc0000d4000)
/home/rogpeppe/other/9fans/plan9/client/conn.go:211 +0x51
9fans.net/go/plan9/client.(*conn).rpc(0xc0000d4000, 0xc000110ca0, 0x0)
/home/rogpeppe/other/9fans/plan9/client/conn.go:271 +0x2b8
9fans.net/go/plan9/client.(*Fid).readAt(0xc0000fc0c0, {0xc0003fa000, 0x1000, 0x8?}, 0xffffffffffffffff)
/home/rogpeppe/other/9fans/plan9/client/fid.go:190 +0x19e
9fans.net/go/plan9/client.(*Fid).Read(0x3?, {0xc0003fa000?, 0xc000110e30?, 0x4370a0?})
/home/rogpeppe/other/9fans/plan9/client/fid.go:155 +0x25
bufio.(*Reader).fill(0xc000406e40)
/home/rogpeppe/go/src/bufio/bufio.go:106 +0x103
bufio.(*Reader).ReadByte(0xc000406e40)
/home/rogpeppe/go/src/bufio/bufio.go:262 +0x2c
9fans.net/go/plumb.(*reader).readLine(0xc000110ef0)
/home/rogpeppe/other/9fans/plumb/plumb.go:144 +0x56
9fans.net/go/plumb.(*Message).Recv(0xc0003dfda0, {0x5ed620, 0xc000406e40})
/home/rogpeppe/other/9fans/plumb/plumb.go:109 +0x98
main.plumbthread()
/home/rogpeppe/other/9fans/cmd/acme/look1.go:68 +0x2ee
created by main.startplumbing
/home/rogpeppe/other/9fans/cmd/acme/look1.go:93 +0x25
goroutine 53 [IO wait]:
internal/poll.runtime_pollWait(0x7f7fc8114a50, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc00009c9c0?, 0xc00002b780?, 0x1)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc00009c9c0, {0xc00002b780, 0x4, 0x80})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
os.(*File).read(...)
/home/rogpeppe/go/src/os/file_posix.go:31
os.(*File).Read(0xc000010010, {0xc00002b780?, 0xc000113ca0?, 0x44a972?})
/home/rogpeppe/go/src/os/file.go:119 +0x5e
io.ReadAtLeast({0x5ed880, 0xc000010010}, {0xc00002b780, 0x4, 0x80}, 0x4)
/home/rogpeppe/go/src/io/io.go:331 +0x9a
io.ReadFull(...)
/home/rogpeppe/go/src/io/io.go:350
9fans.net/go/plan9.ReadFcall({0x5ed880, 0xc000010010})
/home/rogpeppe/other/9fans/plan9/fcall.go:421 +0x5b
main.fsysproc()
/home/rogpeppe/other/9fans/cmd/acme/fsys1.go:136 +0x7c
created by main.fsysinit
/home/rogpeppe/other/9fans/cmd/acme/fsys1.go:126 +0x39c
goroutine 39 [chan receive]:
main.xfidctl(0xc000322000)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:69 +0x37
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 24 [IO wait, 38 minutes]:
internal/poll.runtime_pollWait(0x7f7fc8114968, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc000012540?, 0xc0004c5fb8?, 0x1)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc000012540, {0xc0004c5fb8, 0x2000, 0x2000})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
os.(*File).read(...)
/home/rogpeppe/go/src/os/file_posix.go:31
os.(*File).Read(0xc0000fa068, {0xc0004c5fb8?, 0x0?, 0x0?})
/home/rogpeppe/go/src/os/file.go:119 +0x5e
main.acmeerrorproc()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:321 +0xaf
created by main.acmeerrorinit
/home/rogpeppe/other/9fans/cmd/acme/acme.go:338 +0x9e
goroutine 25 [select]:
main.keyboardthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:369 +0xe5
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:218 +0xcf8
goroutine 26 [semacquire]:
sync.runtime_SemacquireMutex(0xc0000a0358?, 0xa0?, 0xc000103c28?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.bigLock({0x5b24f3?, 0xa?})
/home/rogpeppe/other/9fans/cmd/acme/acme.go:810 +0x4f
9fans.net/go/cmd/acme/internal/ui.Textselect(0xc00042ccf8)
/home/rogpeppe/other/9fans/cmd/acme/internal/ui/text.go:480 +0x56e
main.mousethread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:553 +0x7d8
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:219 +0xd05
goroutine 27 [select, 6 minutes]:
main.waitthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:608 +0x17a
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:220 +0xd11
goroutine 28 [select]:
main.xfidallocthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:717 +0x79
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:221 +0xd1d
goroutine 29 [chan receive, 6 minutes]:
main.newwindowthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:742 +0x26
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:222 +0xd29
goroutine 8 [chan receive, 17 minutes]:
main.xfidctl(0xc00002e400)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:69 +0x37
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 30 [semacquire]:
sync.runtime_SemacquireMutex(0x0?, 0x0?, 0xc0004c1b88?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0xc00042cb00)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
9fans.net/go/cmd/acme/internal/wind.Winlock1(0x0?, 0x46?)
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:308 +0x45
9fans.net/go/cmd/acme/internal/wind.Winlock(0x5b3415?, 0xd?)
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:302 +0x45
main.xfideventread(0xc00014e200, 0xc00042cb00)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:1013 +0x117
main.xfidread(0xc00014e200)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:331 +0x57f
main.xfidctl(0xc00014e200)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:71 +0x62
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 44 [chan receive, 38 minutes]:
main.xfideventread(0xc000326100, 0xc00048b600)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:1011 +0xe8
main.xfidread(0xc000326100)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:331 +0x57f
main.xfidctl(0xc000326100)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:71 +0x62
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 1169 [chan receive]:
main.xfidctl(0xc000326980)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:69 +0x37
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 42 [IO wait, 38 minutes]:
internal/poll.runtime_pollWait(0x7f7fc81145c8, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc000396660?, 0xc0001f8000?, 0x1)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc000396660, {0xc0001f8000, 0x8000, 0x8000})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
os.(*File).read(...)
/home/rogpeppe/go/src/os/file_posix.go:31
os.(*File).Read(0xc000148020, {0xc0001f8000?, 0xc000066180?, 0x0?})
/home/rogpeppe/go/src/os/file.go:119 +0x5e
io.copyBuffer({0x5ed600, 0xc000066180}, {0x5ed880, 0xc000148020}, {0x0, 0x0, 0x0})
/home/rogpeppe/go/src/io/io.go:426 +0x1b2
io.Copy(...)
/home/rogpeppe/go/src/io/io.go:385
9fans.net/go/cmd/acme/internal/exec.fsopenfd.func2()
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1142 +0x45
created by 9fans.net/go/cmd/acme/internal/exec.fsopenfd
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1141 +0x118
goroutine 43 [syscall, 38 minutes]:
syscall.Syscall6(0xf7, 0x1, 0x131919, 0xc0003b3e28, 0x1000004, 0x0, 0x0)
/home/rogpeppe/go/src/syscall/asm_linux_amd64.s:43 +0x5
os.(*Process).blockUntilWaitable(0xc0003720c0)
/home/rogpeppe/go/src/os/wait_waitid.go:32 +0x9c
os.(*Process).wait(0xc0003720c0)
/home/rogpeppe/go/src/os/exec_unix.go:22 +0x28
os.(*Process).Wait(...)
/home/rogpeppe/go/src/os/exec.go:132
os/exec.(*Cmd).Wait(0xc00013e160)
/home/rogpeppe/go/src/os/exec/exec.go:507 +0x54
9fans.net/go/cmd/acme/internal/exec.runproc.func1()
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1054 +0x25
created by 9fans.net/go/cmd/acme/internal/exec.runproc
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1053 +0xffc
goroutine 1117 [chan receive]:
main.xfidctl(0xc00014e140)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:69 +0x37
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 1348 [syscall, 6 minutes]:
syscall.Syscall6(0xf7, 0x1, 0x13256e, 0xc0003af628, 0x1000004, 0x0, 0x0)
/home/rogpeppe/go/src/syscall/asm_linux_amd64.s:43 +0x5
os.(*Process).blockUntilWaitable(0xc00072e960)
/home/rogpeppe/go/src/os/wait_waitid.go:32 +0x9c
os.(*Process).wait(0xc00072e960)
/home/rogpeppe/go/src/os/exec_unix.go:22 +0x28
os.(*Process).Wait(...)
/home/rogpeppe/go/src/os/exec.go:132
os/exec.(*Cmd).Wait(0xc00013e2c0)
/home/rogpeppe/go/src/os/exec/exec.go:507 +0x54
9fans.net/go/cmd/acme/internal/exec.runproc.func1()
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1054 +0x25
created by 9fans.net/go/cmd/acme/internal/exec.runproc
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1053 +0xffc
goroutine 1312 [IO wait, 6 minutes]:
internal/poll.runtime_pollWait(0x7f7fc8114228, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc000763080?, 0xc000810000?, 0x1)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc000763080, {0xc000810000, 0x8000, 0x8000})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
os.(*File).read(...)
/home/rogpeppe/go/src/os/file_posix.go:31
os.(*File).Read(0xc0000fa110, {0xc000810000?, 0xc0000fc210?, 0xc000106f50?})
/home/rogpeppe/go/src/os/file.go:119 +0x5e
io.copyBuffer({0x5ed600, 0xc0000fc210}, {0x5ed880, 0xc0000fa110}, {0x0, 0x0, 0x0})
/home/rogpeppe/go/src/io/io.go:426 +0x1b2
io.Copy(...)
/home/rogpeppe/go/src/io/io.go:385
9fans.net/go/cmd/acme/internal/exec.fsopenfd.func2()
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1142 +0x45
created by 9fans.net/go/cmd/acme/internal/exec.fsopenfd
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1141 +0x118
goroutine 1367 [semacquire]:
sync.runtime_SemacquireMutex(0x406fe0?, 0x40?, 0xc0003ac7a0?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.init.0.func1.1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:796 +0x49
created by main.init.0.func1
/home/rogpeppe/other/9fans/cmd/acme/acme.go:795 +0x8a
rax 0xca
rbx 0x0
rcx 0x4649c3
rdx 0x0
rdi 0x6e7250
rsi 0x80
rbp 0x7ffd0db6bf60
rsp 0x7ffd0db6bf18
r8 0x0
r9 0x0
r10 0x0
r11 0x286
r12 0x6ff
r13 0x4
r14 0x6e6920
r15 0x7f7fc81831a0
rip 0x4649c1
rflags 0x286
cs 0x33
fs 0x0
from go.
This one happened very soon after startup.
Currently held by goroutine 55; xfideventread
Commit 8c0a09b.
PC=0x4649c1 m=0 sigcode=0
goroutine 0 [idle]:
runtime.futex()
/home/rogpeppe/go/src/runtime/sys_linux_amd64.s:552 +0x21
runtime.futexsleep(0xc000040500?, 0x40c893?, 0x1e?)
/home/rogpeppe/go/src/runtime/os_linux.go:56 +0x36
runtime.notesleep(0x6e7250)
/home/rogpeppe/go/src/runtime/lock_futex.go:159 +0x87
runtime.mPark()
/home/rogpeppe/go/src/runtime/proc.go:1432 +0x2a
runtime.stopm()
/home/rogpeppe/go/src/runtime/proc.go:2402 +0x78
runtime.findrunnable()
/home/rogpeppe/go/src/runtime/proc.go:2978 +0x865
runtime.schedule()
/home/rogpeppe/go/src/runtime/proc.go:3361 +0x239
runtime.park_m(0xc00010e9c0?)
/home/rogpeppe/go/src/runtime/proc.go:3510 +0x14d
runtime.mcall()
/home/rogpeppe/go/src/runtime/asm_amd64.s:433 +0x43
goroutine 1 [chan receive, 8 minutes]:
main.main()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:225 +0xd3c
goroutine 21 [select]:
main.init.0.func1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:800 +0xd5
created by main.init.0
/home/rogpeppe/other/9fans/cmd/acme/acme.go:791 +0x25
goroutine 23 [chan receive, 8 minutes]:
main.main.func5()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:117 +0xb9
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:116 +0x6af
goroutine 50 [chan send, 4 minutes]:
9fans.net/go/draw.mouseproc(0x0?, 0xc0000be000, 0x4c10ea?, 0x0?)
/home/rogpeppe/other/9fans/draw/mouse.go:63 +0x5c
created by 9fans.net/go/draw.(*Display).InitMouse
/home/rogpeppe/other/9fans/draw/mouse.go:49 +0x12e
goroutine 51 [IO wait, 2 minutes]:
internal/poll.runtime_pollWait(0x7f7906146cd8, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc0000122a0?, 0xc0005b2010?, 0x1)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc0000122a0, {0xc0005b2010, 0x4, 0x4})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
os.(*File).read(...)
/home/rogpeppe/go/src/os/file_posix.go:31
os.(*File).Read(0xc000010008, {0xc0005b2010?, 0xc00012caf0?, 0x44a972?})
/home/rogpeppe/go/src/os/file.go:119 +0x5e
io.ReadAtLeast({0x5ed880, 0xc000010008}, {0xc0005b2010, 0x4, 0x4}, 0x4)
/home/rogpeppe/go/src/io/io.go:331 +0x9a
io.ReadFull(...)
/home/rogpeppe/go/src/io/io.go:350
9fans.net/go/draw/drawfcall.ReadMsg({0x5ed880, 0xc000010008})
/home/rogpeppe/other/9fans/draw/drawfcall/msg.go:232 +0x59
9fans.net/go/draw/drawfcall.(*Conn).RPC(0xc00007a0a0, 0xc00012cd28, 0xc000352000)
/home/rogpeppe/other/9fans/draw/drawfcall/mux.go:93 +0x425
9fans.net/go/draw/drawfcall.(*Conn).ReadKbd(0x0?)
/home/rogpeppe/other/9fans/draw/drawfcall/mux.go:156 +0x7c
9fans.net/go/draw.kbdproc(0xc0000be000, 0x0?)
/home/rogpeppe/other/9fans/draw/keyboard.go:43 +0x48
created by 9fans.net/go/draw.(*Display).InitKeyboard
/home/rogpeppe/other/9fans/draw/keyboard.go:37 +0x8a
goroutine 52 [IO wait, 7 minutes]:
internal/poll.runtime_pollWait(0x7f7906146938, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc0002b4080?, 0xc0002d4480?, 0x0)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc0002b4080, {0xc0002d4480, 0x4, 0x80})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0002b4080, {0xc0002d4480?, 0x100c000128aa8?, 0x7f78fefc1e30?})
/home/rogpeppe/go/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc0000a2018, {0xc0002d4480?, 0xc000128b28?, 0x44a972?})
/home/rogpeppe/go/src/net/net.go:183 +0x45
io.ReadAtLeast({0x5ed820, 0xc0000a2018}, {0xc0002d4480, 0x4, 0x80}, 0x4)
/home/rogpeppe/go/src/io/io.go:331 +0x9a
io.ReadFull(...)
/home/rogpeppe/go/src/io/io.go:350
9fans.net/go/plan9.ReadFcall({0x5ed820, 0xc0000a2018})
/home/rogpeppe/other/9fans/plan9/fcall.go:421 +0x5b
9fans.net/go/plan9/client.(*conn).read(0xc000122000)
/home/rogpeppe/other/9fans/plan9/client/conn.go:211 +0x51
9fans.net/go/plan9/client.(*conn).rpc(0xc000122000, 0xc000128ca0, 0x0)
/home/rogpeppe/other/9fans/plan9/client/conn.go:271 +0x2b8
9fans.net/go/plan9/client.(*Fid).readAt(0xc0002b60c0, {0xc0000fc000, 0x1000, 0x8?}, 0xffffffffffffffff)
/home/rogpeppe/other/9fans/plan9/client/fid.go:190 +0x19e
9fans.net/go/plan9/client.(*Fid).Read(0x3?, {0xc0000fc000?, 0xc000128e70?, 0x48327a?})
/home/rogpeppe/other/9fans/plan9/client/fid.go:155 +0x25
bufio.(*Reader).fill(0xc0002bf3e0)
/home/rogpeppe/go/src/bufio/bufio.go:106 +0x103
bufio.(*Reader).ReadByte(0xc0002bf3e0)
/home/rogpeppe/go/src/bufio/bufio.go:262 +0x2c
9fans.net/go/plumb.(*reader).readLine(0xc000128ef0)
/home/rogpeppe/other/9fans/plumb/plumb.go:144 +0x56
9fans.net/go/plumb.(*Message).Recv(0xc00041ac60, {0x5ed620, 0xc0002bf3e0})
/home/rogpeppe/other/9fans/plumb/plumb.go:109 +0x98
main.plumbthread()
/home/rogpeppe/other/9fans/cmd/acme/look1.go:68 +0x2ee
created by main.startplumbing
/home/rogpeppe/other/9fans/cmd/acme/look1.go:93 +0x25
goroutine 53 [IO wait, 5 minutes]:
internal/poll.runtime_pollWait(0x7f7906146bf0, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc0000a4960?, 0xc00002ba00?, 0x1)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc0000a4960, {0xc00002ba00, 0x4, 0x80})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
os.(*File).read(...)
/home/rogpeppe/go/src/os/file_posix.go:31
os.(*File).Read(0xc0002a8010, {0xc00002ba00?, 0xc000129ca0?, 0x44a972?})
/home/rogpeppe/go/src/os/file.go:119 +0x5e
io.ReadAtLeast({0x5ed880, 0xc0002a8010}, {0xc00002ba00, 0x4, 0x80}, 0x4)
/home/rogpeppe/go/src/io/io.go:331 +0x9a
io.ReadFull(...)
/home/rogpeppe/go/src/io/io.go:350
9fans.net/go/plan9.ReadFcall({0x5ed880, 0xc0002a8010})
/home/rogpeppe/other/9fans/plan9/fcall.go:421 +0x5b
main.fsysproc()
/home/rogpeppe/other/9fans/cmd/acme/fsys1.go:136 +0x7c
created by main.fsysinit
/home/rogpeppe/other/9fans/cmd/acme/fsys1.go:126 +0x39c
goroutine 55 [semacquire, 4 minutes]:
sync.runtime_SemacquireMutex(0x0?, 0x0?, 0xc000321b88?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0xc000141b80)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
9fans.net/go/cmd/acme/internal/wind.Winlock1(0x0?, 0x46?)
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:308 +0x45
9fans.net/go/cmd/acme/internal/wind.Winlock(0x5b3415?, 0xd?)
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:302 +0x45
main.xfideventread(0xc00002e040, 0xc000141b80)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:1013 +0x117
main.xfidread(0xc00002e040)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:331 +0x57f
main.xfidctl(0xc00002e040)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:71 +0x62
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 103 [semacquire, 4 minutes]:
sync.runtime_SemacquireMutex(0x406fe0?, 0x0?, 0xc0002877a0?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.init.0.func1.1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:796 +0x49
created by main.init.0.func1
/home/rogpeppe/other/9fans/cmd/acme/acme.go:795 +0x8a
goroutine 32 [chan receive, 5 minutes]:
main.xfidctl(0xc00009e600)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:69 +0x37
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 24 [IO wait, 8 minutes]:
internal/poll.runtime_pollWait(0x7f7906146768, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc000012840?, 0xc000325fb8?, 0x1)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc000012840, {0xc000325fb8, 0x2000, 0x2000})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
os.(*File).read(...)
/home/rogpeppe/go/src/os/file_posix.go:31
os.(*File).Read(0xc000010180, {0xc000325fb8?, 0x0?, 0x0?})
/home/rogpeppe/go/src/os/file.go:119 +0x5e
main.acmeerrorproc()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:321 +0xaf
created by main.acmeerrorinit
/home/rogpeppe/other/9fans/cmd/acme/acme.go:338 +0x9e
goroutine 25 [semacquire, 2 minutes]:
sync.runtime_SemacquireMutex(0xc00031e000?, 0x0?, 0xc000416f00?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.bigLock({0x5b3a60?, 0xf?})
/home/rogpeppe/other/9fans/cmd/acme/acme.go:810 +0x4f
main.keyboardthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:383 +0x187
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:218 +0xcf8
goroutine 26 [semacquire, 4 minutes]:
sync.runtime_SemacquireMutex(0xc0000284d8?, 0xc0?, 0xc00010f748?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.bigLock({0x5b24f3?, 0xa?})
/home/rogpeppe/other/9fans/cmd/acme/acme.go:810 +0x4f
9fans.net/go/cmd/acme/internal/ui.Textselect(0xc000141d78)
/home/rogpeppe/other/9fans/cmd/acme/internal/ui/text.go:480 +0x56e
main.mousethread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:553 +0x7d8
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:219 +0xd05
goroutine 27 [select, 8 minutes]:
main.waitthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:608 +0x17a
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:220 +0xd11
goroutine 28 [select, 5 minutes]:
main.xfidallocthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:717 +0x79
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:221 +0xd1d
goroutine 29 [chan receive, 8 minutes]:
main.newwindowthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:742 +0x26
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:222 +0xd29
goroutine 30 [chan receive, 5 minutes]:
main.xfidctl(0xc00009e480)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:69 +0x37
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 31 [IO wait, 8 minutes]:
internal/poll.runtime_pollWait(0x7f7906146b08, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc000012b40?, 0xc00036e000?, 0x1)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc000012b40, {0xc00036e000, 0x8000, 0x8000})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
os.(*File).read(...)
/home/rogpeppe/go/src/os/file_posix.go:31
os.(*File).Read(0xc000010190, {0xc00036e000?, 0xc0000980f0?, 0x0?})
/home/rogpeppe/go/src/os/file.go:119 +0x5e
io.copyBuffer({0x5ed600, 0xc0000980f0}, {0x5ed880, 0xc000010190}, {0x0, 0x0, 0x0})
/home/rogpeppe/go/src/io/io.go:426 +0x1b2
io.Copy(...)
/home/rogpeppe/go/src/io/io.go:385
9fans.net/go/cmd/acme/internal/exec.fsopenfd.func2()
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1142 +0x45
created by 9fans.net/go/cmd/acme/internal/exec.fsopenfd
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1141 +0x118
goroutine 56 [syscall, 8 minutes]:
syscall.Syscall6(0xf7, 0x1, 0x132791, 0xc000284e28, 0x1000004, 0x0, 0x0)
/home/rogpeppe/go/src/syscall/asm_linux_amd64.s:43 +0x5
os.(*Process).blockUntilWaitable(0xc0000a8180)
/home/rogpeppe/go/src/os/wait_waitid.go:32 +0x9c
os.(*Process).wait(0xc0000a8180)
/home/rogpeppe/go/src/os/exec_unix.go:22 +0x28
os.(*Process).Wait(...)
/home/rogpeppe/go/src/os/exec.go:132
os/exec.(*Cmd).Wait(0xc00037c000)
/home/rogpeppe/go/src/os/exec/exec.go:507 +0x54
9fans.net/go/cmd/acme/internal/exec.runproc.func2()
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1087 +0x25
created by 9fans.net/go/cmd/acme/internal/exec.runproc
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1086 +0xbbf
goroutine 11 [chan receive, 5 minutes]:
main.xfidctl(0xc00009e940)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:69 +0x37
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 43 [semacquire, 4 minutes]:
sync.runtime_SemacquireMutex(0x406fe0?, 0x20?, 0xc0002e37a0?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.init.0.func1.1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:796 +0x49
created by main.init.0.func1
/home/rogpeppe/other/9fans/cmd/acme/acme.go:795 +0x8a
goroutine 14 [semacquire, 2 minutes]:
sync.runtime_SemacquireMutex(0x406fe0?, 0xe0?, 0xc0002847a0?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.init.0.func1.1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:796 +0x49
created by main.init.0.func1
/home/rogpeppe/other/9fans/cmd/acme/acme.go:795 +0x8a
goroutine 44 [semacquire, 4 minutes]:
sync.runtime_SemacquireMutex(0xc00004dfb0?, 0x0?, 0x0?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.init.0.func1.1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:796 +0x49
created by main.init.0.func1
/home/rogpeppe/other/9fans/cmd/acme/acme.go:795 +0x8a
goroutine 104 [semacquire, 4 minutes]:
sync.runtime_SemacquireMutex(0x0?, 0x0?, 0x0?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.init.0.func1.1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:796 +0x49
created by main.init.0.func1
/home/rogpeppe/other/9fans/cmd/acme/acme.go:795 +0x8a
goroutine 105 [semacquire, 2 minutes]:
sync.runtime_SemacquireMutex(0x0?, 0xe8?, 0xc000028480?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.init.0.func1.1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:796 +0x49
created by main.init.0.func1
/home/rogpeppe/other/9fans/cmd/acme/acme.go:795 +0x8a
goroutine 106 [semacquire, 2 minutes]:
sync.runtime_SemacquireMutex(0x0?, 0x0?, 0x0?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.init.0.func1.1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:796 +0x49
created by main.init.0.func1
/home/rogpeppe/other/9fans/cmd/acme/acme.go:795 +0x8a
goroutine 107 [semacquire, 2 minutes]:
sync.runtime_SemacquireMutex(0x0?, 0x50?, 0x0?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.init.0.func1.1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:796 +0x49
created by main.init.0.func1
/home/rogpeppe/other/9fans/cmd/acme/acme.go:795 +0x8a
goroutine 15 [semacquire]:
sync.runtime_SemacquireMutex(0x0?, 0x0?, 0x0?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.init.0.func1.1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:796 +0x49
created by main.init.0.func1
/home/rogpeppe/other/9fans/cmd/acme/acme.go:795 +0x8a
goroutine 108 [semacquire]:
sync.runtime_SemacquireMutex(0x0?, 0x0?, 0x0?)
/home/rogpeppe/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0x72a788)
/home/rogpeppe/go/src/sync/mutex.go:153 +0x165
sync.(*Mutex).Lock(...)
/home/rogpeppe/go/src/sync/mutex.go:81
main.init.0.func1.1()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:796 +0x49
created by main.init.0.func1
/home/rogpeppe/other/9fans/cmd/acme/acme.go:795 +0x8a
rax 0xca
rbx 0x0
rcx 0x4649c3
rdx 0x0
rdi 0x6e7250
rsi 0x80
rbp 0x7ffca7b7aad8
rsp 0x7ffca7b7aa90
r8 0x0
r9 0x0
r10 0x0
r11 0x286
r12 0xce
r13 0x4
r14 0x6e6920
r15 0x2
rip 0x4649c1
rflags 0x286
cs 0x33
fs 0x0
gs 0x0
from go.
I added some instrumentation to all uses of sync.Mutex that records some stack information about acquirer:
acme: goroutine 51
probable deadlock acquiring mutex ""
originally acquired by goroutine 30
callers:
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:308: 9fans.net/go/cmd/acme/internal/wind.Winlock1
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:302: 9fans.net/go/cmd/acme/internal/wind.Winlock
/home/rogpeppe/other/9fans/cmd/acme/acme.go:544: main.mousethread
/home/rogpeppe/go/src/runtime/asm_amd64.s:1579: runtime.goexit
acme: goroutine 30
probable deadlock acquiring mutex "bigLock"
originally acquired by goroutine 51
callers:
/home/rogpeppe/other/9fans/cmd/acme/acme.go:785: main.bigLock
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:1012: main.xfideventread
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:331: main.xfidread
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:71: main.xfidctl
/home/rogpeppe/go/src/runtime/asm_amd64.s:1579: runtime.goexit
goroutine 0 [idle]:
runtime.futex()
/home/rogpeppe/go/src/runtime/sys_linux_amd64.s:552 +0x21
runtime.futexsleep(0xc000032a00?, 0x4354f4?, 0xc000000000?)
/home/rogpeppe/go/src/runtime/os_linux.go:56 +0x36
runtime.notesleep(0x6e84d0)
/home/rogpeppe/go/src/runtime/lock_futex.go:159 +0x87
runtime.mPark()
/home/rogpeppe/go/src/runtime/proc.go:1432 +0x2a
runtime.stopm()
/home/rogpeppe/go/src/runtime/proc.go:2402 +0x78
runtime.findrunnable()
/home/rogpeppe/go/src/runtime/proc.go:2978 +0x865
runtime.schedule()
/home/rogpeppe/go/src/runtime/proc.go:3361 +0x239
runtime.park_m(0xc000182820?)
/home/rogpeppe/go/src/runtime/proc.go:3510 +0x14d
runtime.mcall()
/home/rogpeppe/go/src/runtime/asm_amd64.s:433 +0x43
goroutine 1 [chan receive, 6 minutes]:
main.main()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:225 +0xd5d
goroutine 10 [chan receive, 6 minutes]:
main.main.func5()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:117 +0xd4
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:116 +0x6af
goroutine 21 [chan send]:
9fans.net/go/draw.mouseproc(0x0?, 0xc000144000, 0x0?, 0x0?)
/home/rogpeppe/other/9fans/draw/mouse.go:63 +0x5c
created by 9fans.net/go/draw.(*Display).InitMouse
/home/rogpeppe/other/9fans/draw/mouse.go:49 +0x12e
goroutine 22 [IO wait]:
internal/poll.runtime_pollWait(0x7f7f78201558, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc0000783c0?, 0xc000146ddc?, 0x1)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc0000783c0, {0xc000146ddc, 0x4, 0x4})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
os.(*File).read(...)
/home/rogpeppe/go/src/os/file_posix.go:31
os.(*File).Read(0xc0000100d8, {0xc000146ddc?, 0xc0001adaf0?, 0x44a972?})
/home/rogpeppe/go/src/os/file.go:119 +0x5e
io.ReadAtLeast({0x5ede40, 0xc0000100d8}, {0xc000146ddc, 0x4, 0x4}, 0x4)
/home/rogpeppe/go/src/io/io.go:331 +0x9a
io.ReadFull(...)
/home/rogpeppe/go/src/io/io.go:350
9fans.net/go/draw/drawfcall.ReadMsg({0x5ede40, 0xc0000100d8})
/home/rogpeppe/other/9fans/draw/drawfcall/msg.go:232 +0x59
9fans.net/go/draw/drawfcall.(*Conn).RPC(0xc00007a1e0, 0xc0001add28, 0xc00022fb00)
/home/rogpeppe/other/9fans/draw/drawfcall/mux.go:93 +0x425
9fans.net/go/draw/drawfcall.(*Conn).ReadKbd(0x0?)
/home/rogpeppe/other/9fans/draw/drawfcall/mux.go:156 +0x7c
9fans.net/go/draw.kbdproc(0xc000144000, 0x0?)
/home/rogpeppe/other/9fans/draw/keyboard.go:43 +0x48
created by 9fans.net/go/draw.(*Display).InitKeyboard
/home/rogpeppe/other/9fans/draw/keyboard.go:37 +0x8a
goroutine 23 [IO wait, 3 minutes]:
internal/poll.runtime_pollWait(0x7f7f782011b8, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc000218080?, 0xc0000ee200?, 0x0)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc000218080, {0xc0000ee200, 0x4, 0x80})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000218080, {0xc0000ee200?, 0x100c0001a9aa8?, 0x7f7fa0ecc968?})
/home/rogpeppe/go/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc00021a000, {0xc0000ee200?, 0xc0001a9b28?, 0x44a972?})
/home/rogpeppe/go/src/net/net.go:183 +0x45
io.ReadAtLeast({0x5edde0, 0xc00021a000}, {0xc0000ee200, 0x4, 0x80}, 0x4)
/home/rogpeppe/go/src/io/io.go:331 +0x9a
io.ReadFull(...)
/home/rogpeppe/go/src/io/io.go:350
9fans.net/go/plan9.ReadFcall({0x5edde0, 0xc00021a000})
/home/rogpeppe/other/9fans/plan9/fcall.go:421 +0x5b
9fans.net/go/plan9/client.(*conn).read(0xc000122000)
/home/rogpeppe/other/9fans/plan9/client/conn.go:211 +0x51
9fans.net/go/plan9/client.(*conn).rpc(0xc000122000, 0xc0001a9ca0, 0x0)
/home/rogpeppe/other/9fans/plan9/client/conn.go:271 +0x2b8
9fans.net/go/plan9/client.(*Fid).readAt(0xc00021c0c0, {0xc000214000, 0x1000, 0x8?}, 0xffffffffffffffff)
/home/rogpeppe/other/9fans/plan9/client/fid.go:190 +0x19e
9fans.net/go/plan9/client.(*Fid).Read(0x3?, {0xc000214000?, 0xc0001a9e30?, 0x4370a0?})
/home/rogpeppe/other/9fans/plan9/client/fid.go:155 +0x25
bufio.(*Reader).fill(0xc000284900)
/home/rogpeppe/go/src/bufio/bufio.go:106 +0x103
bufio.(*Reader).ReadByte(0xc000284900)
/home/rogpeppe/go/src/bufio/bufio.go:262 +0x2c
9fans.net/go/plumb.(*reader).readLine(0xc0001a9ef0)
/home/rogpeppe/other/9fans/plumb/plumb.go:144 +0x56
9fans.net/go/plumb.(*Message).Recv(0xc0000db6e0, {0x5edbe0, 0xc000284900})
/home/rogpeppe/other/9fans/plumb/plumb.go:109 +0x98
main.plumbthread()
/home/rogpeppe/other/9fans/cmd/acme/look1.go:68 +0x327
created by main.startplumbing
/home/rogpeppe/other/9fans/cmd/acme/look1.go:93 +0x25
goroutine 24 [IO wait]:
internal/poll.runtime_pollWait(0x7f7f78201470, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc0000a6840?, 0xc00024d100?, 0x1)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc0000a6840, {0xc00024d100, 0x4, 0x80})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
os.(*File).read(...)
/home/rogpeppe/go/src/os/file_posix.go:31
os.(*File).Read(0xc0000b4008, {0xc00024d100?, 0xc000171ca0?, 0x44a972?})
/home/rogpeppe/go/src/os/file.go:119 +0x5e
io.ReadAtLeast({0x5ede40, 0xc0000b4008}, {0xc00024d100, 0x4, 0x80}, 0x4)
/home/rogpeppe/go/src/io/io.go:331 +0x9a
io.ReadFull(...)
/home/rogpeppe/go/src/io/io.go:350
9fans.net/go/plan9.ReadFcall({0x5ede40, 0xc0000b4008})
/home/rogpeppe/other/9fans/plan9/fcall.go:421 +0x5b
main.fsysproc()
/home/rogpeppe/other/9fans/cmd/acme/fsys1.go:136 +0x7c
created by main.fsysinit
/home/rogpeppe/other/9fans/cmd/acme/fsys1.go:126 +0x39c
goroutine 28 [IO wait, 6 minutes]:
internal/poll.runtime_pollWait(0x7f7f78201728, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc0000a7560?, 0xc000305fb8?, 0x1)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc0000a7560, {0xc000305fb8, 0x2000, 0x2000})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
os.(*File).read(...)
/home/rogpeppe/go/src/os/file_posix.go:31
os.(*File).Read(0xc0000b4050, {0xc000305fb8?, 0x0?, 0x0?})
/home/rogpeppe/go/src/os/file.go:119 +0x5e
main.acmeerrorproc()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:321 +0xaf
created by main.acmeerrorinit
/home/rogpeppe/other/9fans/cmd/acme/acme.go:338 +0x9e
goroutine 29 [select]:
main.keyboardthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:369 +0x105
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:218 +0xcf8
goroutine 30 [select]:
9fans.net/go/cmd/acme/internal/sync.(*Mutex).Lock(0x6e7320)
/home/rogpeppe/other/9fans/cmd/acme/internal/sync/mutex.go:42 +0x152
main.bigLock()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:785 +0x25
9fans.net/go/cmd/acme/internal/ui.Textselect(0xc000017358)
/home/rogpeppe/other/9fans/cmd/acme/internal/ui/text.go:480 +0x562
main.mousethread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:553 +0x978
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:219 +0xd05
goroutine 31 [runnable]:
main.waitthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:608 +0x19a
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:220 +0xd11
goroutine 32 [select]:
main.xfidallocthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:717 +0x79
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:221 +0xd1d
goroutine 33 [chan receive, 6 minutes]:
main.newwindowthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:742 +0x26
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:222 +0xd29
goroutine 50 [chan receive]:
main.xfidctl(0xc0000df200)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:69 +0x37
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 39 [chan receive]:
main.xfidctl(0xc000012780)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:69 +0x37
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 11 [chan receive]:
main.xfidctl(0xc0000de000)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:69 +0x37
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
goroutine 38 [IO wait]:
internal/poll.runtime_pollWait(0x7f7f782010d0, 0x72)
/home/rogpeppe/go/src/runtime/netpoll.go:233 +0x89
internal/poll.(*pollDesc).wait(0xc0000a0900?, 0xc000161880?, 0x0)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:83 +0x32
internal/poll.(*pollDesc).waitRead(...)
/home/rogpeppe/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc0000a0900, {0xc000161880, 0x4, 0x80})
/home/rogpeppe/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0000a0900, {0xc000161880?, 0x100c00016fc80?, 0x7f7f78135468?})
/home/rogpeppe/go/src/net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc00021a028, {0xc000161880?, 0xc00016fd00?, 0x44a972?})
/home/rogpeppe/go/src/net/net.go:183 +0x45
io.ReadAtLeast({0x5edde0, 0xc00021a028}, {0xc000161880, 0x4, 0x80}, 0x4)
/home/rogpeppe/go/src/io/io.go:331 +0x9a
io.ReadFull(...)
/home/rogpeppe/go/src/io/io.go:350
9fans.net/go/plan9.ReadFcall({0x5edde0, 0xc00021a028})
/home/rogpeppe/other/9fans/plan9/fcall.go:421 +0x5b
9fans.net/go/plan9/client.(*conn).read(0xc0001220e0)
/home/rogpeppe/other/9fans/plan9/client/conn.go:211 +0x51
9fans.net/go/plan9/client.(*conn).rpc(0xc0001220e0, 0xc00016fe48, 0xc00021c150)
/home/rogpeppe/other/9fans/plan9/client/conn.go:271 +0x2b8
9fans.net/go/plan9/client.(*Fid).Close(0xc00021c150)
/home/rogpeppe/other/9fans/plan9/client/fid.go:46 +0x95
9fans.net/go/cmd/acme/internal/exec.fsopenfd.func2()
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1144 +0x65
created by 9fans.net/go/cmd/acme/internal/exec.fsopenfd
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:1141 +0x118
goroutine 51 [select]:
9fans.net/go/cmd/acme/internal/sync.(*Mutex).Lock(0xc000017100)
/home/rogpeppe/other/9fans/cmd/acme/internal/sync/mutex.go:42 +0x152
9fans.net/go/cmd/acme/internal/wind.Winlock1(...)
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:308
9fans.net/go/cmd/acme/internal/wind.Winlock(0x6e7320?, 0x46)
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:302 +0x4f
main.xfideventread(0xc0000ac040, 0xc000017100)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:1013 +0x131
main.xfidread(0xc0000ac040)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:331 +0x57f
main.xfidctl(0xc0000ac040)
/home/rogpeppe/other/9fans/cmd/acme/xfid.go:71 +0x5d
created by main.xfidallocthread
/home/rogpeppe/other/9fans/cmd/acme/acme.go:726 +0x176
from go.
Looks like the issue is that there's an ordering requirement that the window lock should be "inside" biglock, but because TextSelect
drops bigLock before reading from the mouse, xfideventread
manages to acquire bigLock but then can't acquire the window lock because TextSelect
still has it.
Seems like this is a potential problem anywhere we bigUnlock while holding some other lock.
I'll try getting Textselect to drop the window lock before calling bigUnlock, but it's quite possible that might
mess up some invariants.
from go.
I'm reverting 6faf3d8 in my copy for the time being because it's not easy to drop the window lock from inside Textselect.
from go.
Here's another one - it's not OK for xfidlog
to drop the bigLock while the winlock is held.
acme: goroutine 39
probable deadlock acquiring mutex ""
originally acquired by goroutine 40
callers:
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:308: 9fans.net/go/cmd/acme/internal/wind.Winlock1
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:302: 9fans.net/go/cmd/acme/internal/wind.Winlock
/home/rogpeppe/other/9fans/cmd/acme/acme.go:542: main.mousethread
/home/rogpeppe/go/src/runtime/asm_amd64.s:1579: runtime.goexit
goroutine 39 [select]:
9fans.net/go/cmd/acme/internal/sync.(*Mutex).Lock(0xc0002c6700)
/home/rogpeppe/other/9fans/cmd/acme/internal/sync/mutex.go:42 +0x152
9fans.net/go/cmd/acme/internal/wind.Winlock1(...)
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:308
9fans.net/go/cmd/acme/internal/wind.Winlock(0x6e7320?, 0x4b)
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:302 +0x4f
main.keyboardthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:374 +0x151
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:216 +0xcd1
acme: goroutine 40
probable deadlock acquiring mutex "bigLock"
originally acquired by goroutine 39
callers:
/home/rogpeppe/other/9fans/cmd/acme/acme.go:783: main.bigLock
/home/rogpeppe/other/9fans/cmd/acme/acme.go:369: main.keyboardthread
/home/rogpeppe/go/src/runtime/asm_amd64.s:1579: runtime.goexit
goroutine 40 [select]:
9fans.net/go/cmd/acme/internal/sync.(*Mutex).Lock(0x6e7320)
/home/rogpeppe/other/9fans/cmd/acme/internal/sync/mutex.go:42 +0x152
main.bigLock(...)
/home/rogpeppe/other/9fans/cmd/acme/acme.go:783
main.xfidlog(0xc0002c6e00, {0x5b127a, 0x3})
/home/rogpeppe/other/9fans/cmd/acme/logf.go:146 +0x7f
main.main.func7(0xc0002c6e70?)
/home/rogpeppe/other/9fans/cmd/acme/acme.go:143 +0x25
9fans.net/go/cmd/acme/internal/ui.Openfile(0xc0002c6770?, 0xc000237e10)
/home/rogpeppe/other/9fans/cmd/acme/internal/ui/look.go:611 +0x51b
9fans.net/go/cmd/acme/internal/ui.Look3(0xc0002c6770, 0x6a, 0x6a, 0x0)
/home/rogpeppe/other/9fans/cmd/acme/internal/ui/look.go:151 +0x9b3
main.mousethread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:572 +0x8d3
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:217 +0xcdd
from go.
Another one, very similar, but different entry point into xfidlog
. I'll stop posting traces now unless I find one that's significantly different.
acme: goroutine 7
probable deadlock acquiring mutex ""
originally acquired by goroutine 8
callers:
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:308: 9fans.net/go/cmd/acme/internal/wind.Winlock1
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:302: 9fans.net/go/cmd/acme/internal/wind.Winlock
/home/rogpeppe/other/9fans/cmd/acme/acme.go:542: main.mousethread
/home/rogpeppe/go/src/runtime/asm_amd64.s:1579: runtime.goexit
goroutine 7 [select]:
9fans.net/go/cmd/acme/internal/sync.(*Mutex).Lock(0xc0000a8700)
/home/rogpeppe/other/9fans/cmd/acme/internal/sync/mutex.go:42 +0x152
9fans.net/go/cmd/acme/internal/wind.Winlock1(...)
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:308
9fans.net/go/cmd/acme/internal/wind.Winlock(0x6e7320?, 0x4b)
/home/rogpeppe/other/9fans/cmd/acme/internal/wind/wind.go:302 +0x4f
main.keyboardthread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:374 +0x151
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:216 +0xcd1
acme: goroutine 8
probable deadlock acquiring mutex "bigLock"
originally acquired by goroutine 7
callers:
/home/rogpeppe/other/9fans/cmd/acme/acme.go:783: main.bigLock
/home/rogpeppe/other/9fans/cmd/acme/acme.go:369: main.keyboardthread
/home/rogpeppe/go/src/runtime/asm_amd64.s:1579: runtime.goexit
goroutine 8 [select]:
9fans.net/go/cmd/acme/internal/sync.(*Mutex).Lock(0x6e7320)
/home/rogpeppe/other/9fans/cmd/acme/internal/sync/mutex.go:42 +0x152
main.bigLock(...)
/home/rogpeppe/other/9fans/cmd/acme/acme.go:783
main.xfidlog(0xc0000a8700, {0x5b1262, 0x3})
/home/rogpeppe/other/9fans/cmd/acme/logf.go:146 +0x7f
9fans.net/go/cmd/acme/internal/exec.Get(0xc0000a8770?, 0x63?, 0xc0001f2a00?, 0x3?, 0x0?, {0xc0001f2a08?, 0x0?, 0x0?})
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:459 +0x614
9fans.net/go/cmd/acme/internal/exec.Execute(0xc0000a8770, 0x66, 0x66, 0x0, 0x3?)
/home/rogpeppe/other/9fans/cmd/acme/internal/exec/exec.go:221 +0xbce
main.mousethread()
/home/rogpeppe/other/9fans/cmd/acme/acme.go:567 +0x95b
created by main.main
/home/rogpeppe/other/9fans/cmd/acme/acme.go:217 +0xcdd
from go.
Related Issues (20)
- install error on mac
- cmd/acme: panic switching between fonts HOT 1
- acme/Watch: dial unix /tmp/ns..:0/acme: not supported by plan 9 HOT 1
- acme: regex not mathing as much as possible HOT 1
- acmego: not responding to puts HOT 3
- test issue HOT 2
- test issue HOT 2
- cmd/acme: Dump creates corrupted acme.dump files
- cmd/acme: command run in background stays in row tag
- cmd/acme: cannot Kill running commands
- cmd/acme: completion failed
- cmd/acme: window directories missing from fs HOT 1
- cmd/acme: autoscrolling doesn't work correctly HOT 2
- cmd/acme: deadlock HOT 5
- cmd/acme: ^D doesn't work in win HOT 1
- 9pserve: announce unix!/tmp/ns.hherman.:0/acme: No such file or directory HOT 2
- Adding persian/arabic language support
- go/draw does not work on native plan9 system. HOT 2
- test issue
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go.