064ea89caa
a deadlock has been observed with samterm (thanks burnzez), that shows the mouse ioproc being stuck in sending on the resize channel, while the mouse consumer is stuck in a readmouse() loop wanting a rectangle to be drawn by the user: recv(v=0x42df50)+0x28 /sys/src/libthread/channel.c:321 readmouse(mc=0x42df50)+0x54 /sys/src/libdraw/mouse.c:34 getrect(.ret=0x41bce0,but=0x4,mc=0x42df50)+0x62 /sys/src/libdraw/getrect.c:49 r=0x41bc70 rc=0x41bc70 getr(rp=0x41bce0)+0x24 /sys/src/cmd/samterm/main.c:244 p=0x6b000004f6 r=0x2 sweeptext(new=0x0,tag=0x2d)+0x12 /sys/src/cmd/samterm/menu.c:208 r=0x2 t=0x42df50 inmesg(type=0x2,count=0x2)+0x1ab /sys/src/cmd/samterm/mesg.c:136 m=0x10000002d l=0x2d00001b00 i=0x43829000000001 t=0x438290 lp=0x42e050 rcv()+0x7a /sys/src/cmd/samterm/mesg.c:77 threadmain(argv=0x7ffffeffef90)+0x173 /sys/src/cmd/samterm/main.c:63 so avoid blocking in the mouse ioproc by using nbsend() instead of send() for writing to the resize channel. |
||
---|---|---|
.. | ||
alloc.c | ||
allocimagemix.c | ||
arith.c | ||
badrect.c | ||
bezier.c | ||
border.c | ||
buildfont.c | ||
bytesperline.c | ||
chan.c | ||
cloadimage.c | ||
computil.c | ||
creadimage.c | ||
debug.c | ||
defont.c | ||
draw.c | ||
drawrepl.c | ||
eenter.c | ||
egetrect.c | ||
ellipse.c | ||
emenuhit.c | ||
enter.c | ||
event.c | ||
fmt.c | ||
font.c | ||
freesubfont.c | ||
getdefont.c | ||
getrect.c | ||
getsubfont.c | ||
icossin.c | ||
icossin2.c | ||
init.c | ||
keyboard.c | ||
line.c | ||
loadimage.c | ||
makefile | ||
menuhit.c | ||
mkfile | ||
mkfont.c | ||
mouse.c | ||
newwindow.c | ||
openfont.c | ||
poly.c | ||
readcolmap.c | ||
readimage.c | ||
readsubfont.c | ||
rectclip.c | ||
replclipr.c | ||
rgb.c | ||
scroll.c | ||
string.c | ||
stringbg.c | ||
stringsubfont.c | ||
stringwidth.c | ||
subfont.c | ||
subfontcache.c | ||
subfontname.c | ||
test.c | ||
unloadimage.c | ||
window.c | ||
writecolmap.c | ||
writeimage.c | ||
writesubfont.c |