9fans

9fans

Fans of Plan 9

Member Since 7 years ago

Experience Points
0
follower
Lessons Completed
0
follow
Best Reply Awards
5
repos
Activity
Nov
27
1 day ago
started
started time in 1 day ago
started
started time in 1 day ago
started
started time in 1 day ago
Activity icon
fork

refaqtor forked 9fans/plan9port

⚡ Plan 9 from User Space
refaqtor Updated
fork time in 1 day ago
started
started time in 1 day ago
started
started time in 1 day ago
Nov
25
3 days ago
Activity icon
issue

LoupLobet issue 9fans/plan9port

LoupLobet
LoupLobet

Avoid page(1) to terminate when the end of the document is reached

First yhis issue was noticed on the OpenBSD package of plan9port, I don't know if this remains an issue in the current plan9port version, or if the issue is related to OpenBSD as a system.

When you reach the end of a document, or viewing a simple image with page(1), if you try to go the next (non existant) page, the program terminates (that's not something that happen on a real plan9 install).

I kind of fixed the problem on my own: (these are changes i made on view.c) `437,438c437,439 < if(!doc->npage || page + 1 < doc->npage || doc->fwdonly) < showpage(++page, &menu);

  		if(doc->npage && ++page >= doc->npage && !doc->fwdonly)
  			wexits(0);
  		showpage(page, &menu);

520c521 < if(reverse) page++;

  				if(reverse) return;

525c526 < page--;

  				return;

536c537 < if(reverse) page++;

  				if(reverse) return;

540,541c541,542 < if((page >= doc->npage) && !doc->fwdonly) < page--;

  			if((page >= doc->npage) && !doc->fwdonly && !reverse)
  				return;

`

started
started time in 3 days ago
Nov
22
6 days ago
started
started time in 6 days ago
started
started time in 6 days ago
Nov
21
1 week ago
started
started time in 1 week ago
started
started time in 1 week ago
Nov
20
1 week ago
started
started time in 1 week ago
Nov
19
1 week ago
Activity icon
issue

lootch issue comment 9fans/go

lootch
lootch

cmd/acme: ^D doesn't work in win

To repro, in a win window do:

% cat > /tmp/foo
something
^D

The cat never receives EOF and the ^D character goes into the file.

lootch
lootch

Shouldn't that be ^Z, rather?

Lucio.

On 11/19/21, Roger Peppe ***@wrote:

To repro, in a win window do:

% cat > /tmp/foo
something
^D

The cat never receives EOF and the ^D character goes into the file.

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/9fans/go/issues/86

-- Lucio De Re 2 Piet Retief St Kestell (Eastern Free State) 9860 South Africa

Ph.: +27 58 653 1433 Cell: +27 83 251 5824

Activity icon
fork

JoeX25 forked 9fans/plan9port

⚡ Plan 9 from User Space
JoeX25 Updated
fork time in 1 week ago
Activity icon
issue

rogpeppe issue 9fans/go

rogpeppe
rogpeppe

cmd/acme: ^D doesn't work in win

To repo, in a win window do:

% cat > /tmp/foo
something
^D

The cat never receives EOF and the ^D character goes into the file.

started
started time in 1 week ago
Nov
18
1 week ago
started
started time in 1 week ago
Activity icon
issue

rogpeppe issue comment 9fans/go

rogpeppe
rogpeppe

cmd/acme: more deadlocks

Making a new issue for deadlocks found after the recent fixes.

I've also instrumented my version to report which goroutine id held the deadlock and where it was acquired.

rogpeppe
rogpeppe

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
Activity icon
issue

rogpeppe issue comment 9fans/go

rogpeppe
rogpeppe

cmd/acme: more deadlocks

Making a new issue for deadlocks found after the recent fixes.

I've also instrumented my version to report which goroutine id held the deadlock and where it was acquired.

rogpeppe
rogpeppe

Here's another one - it's not OK for xfidlog to drop the lock 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
Activity icon
issue

rogpeppe issue comment 9fans/go

rogpeppe
rogpeppe

cmd/acme: more deadlocks

Making a new issue for deadlocks found after the recent fixes.

I've also instrumented my version to report which goroutine id held the deadlock and where it was acquired.

rogpeppe
rogpeppe

I'm reverting 6faf3d85352eaf9174a0c19ce174115d8ad5f53d in my copy for the time being because it's not easy to drop the window lock from inside Textselect.

Activity icon
issue

rogpeppe issue comment 9fans/go

rogpeppe
rogpeppe

cmd/acme: more deadlocks

Making a new issue for deadlocks found after the recent fixes.

I've also instrumented my version to report which goroutine id held the deadlock and where it was acquired.

rogpeppe
rogpeppe

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.

Activity icon
issue

rogpeppe issue comment 9fans/go

rogpeppe
rogpeppe

cmd/acme: more deadlocks

Making a new issue for deadlocks found after the recent fixes.

I've also instrumented my version to report which goroutine id held the deadlock and where it was acquired.

rogpeppe
rogpeppe

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

Activity icon
issue

rogpeppe issue comment 9fans/go

rogpeppe
rogpeppe

cmd/acme: more deadlocks

Making a new issue for deadlocks found after the recent fixes.

I've also instrumented my version to report which goroutine id held the deadlock and where it was acquired.

rogpeppe
rogpeppe

This one happened very soon after startup. Currently held by goroutine 55; xfideventread

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
Activity icon
issue

rogpeppe issue comment 9fans/go

rogpeppe
rogpeppe

cmd/acme: more deadlocks

Making a new issue for deadlocks found after the recent fixes.

I've also instrumented my version to report which goroutine id held the deadlock and where it was acquired.

rogpeppe
rogpeppe

This one happened very soon after startup. Currently held by goroutine 55; xfideventread

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
Activity icon
issue

rogpeppe issue comment 9fans/go

rogpeppe
rogpeppe

cmd/acme: more deadlocks

Making a new issue for deadlocks found after the recent fixes.

rogpeppe
rogpeppe

lock currently held by goroutine 55; xfideventread

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
Activity icon
issue

rogpeppe issue 9fans/go

rogpeppe
rogpeppe

cmd/acme: more deadlocks

Making a new issue for deadlocks found after the recent fixes.

pull request

rogpeppe pull request 9fans/go

rogpeppe
rogpeppe

cmd/acme/internal/fileload: fix completion logic

The string wasn't being appropriately truncated so we were seeing error messages like:

error attempting completion: open /home/rogpeppe/src/influx/openapi/contracts/\x00\x00....: invalid argument

Fix by using more natural Go idioms.

Closes #74.

Activity icon
issue

rogpeppe issue 9fans/go

rogpeppe
rogpeppe

cmd/acme: completion failed

I haven't had time to go into this more, but as a placeholder, I tried filename completion and got this error (xd -c output because of the nulls in there):

0000000   e  r  r  o  r     a  t  t  e  m  p  t  i  n  g
0000010      c  o  m  p  l  e  t  i  o  n  :     o  p  e
0000020   n     /  h  o  m  e  /  r  o  g  p  e  p  p  e
0000030   /  s  r  c  /  c  o  n  f  i  g  c  a  t  -  c
0000040   u  e  / 00 00 00 00 00 00 00 00 00 00 00 00 00
0000050  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000060  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000070  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000080  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000090  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000a0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000c0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000d0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000e0  00 00 00 00 00 00 00 00 00 00  :     i  n  v  a
00000f0   l  i  d     a  r  g  u  m  e  n  t
00000fc 
push

rogpeppe push 9fans/go

rogpeppe
rogpeppe

cmd/acme/internal/fileload: fix completion logic

The string wasn't being appropriately truncated so we were seeing error messages like:

error attempting completion: open /home/rogpeppe/src/influx/openapi/contracts/\x00\x00....: invalid argument

Fix by using more natural Go idioms.

Closes #74.

rogpeppe
rogpeppe

Merge pull request #84 from rogpeppe-contrib/017-fix-completion

cmd/acme/internal/fileload: fix completion logic

commit sha: 4b1f37b1050a14af0a6c5b7c2b35627a263b0af7

push time in 1 week ago
Previous