Rio dies when user selects last hidden window in button3menu if the window gets deleted underneath (say, the last process exits).
How to reproduce:
• draw a new window
• run: echo hide >/dev/wctl; sleep 5; exit
• within 5 seconds, depress and hold mouse button 3 for at least 5 seconds
• select the just-hidden window — rio dies in:
acid: lstk()
wunhide(h=0x0)+0x30 /sys/src/cmd/rio/rio.c:1100
w=0x710d0
i=0x0
unhide(h=0x6)+0x27 /sys/src/cmd/rio/rio.c:1130
button3menu()+0x97 /sys/src/cmd/rio/rio.c:687
mousethread()+0x2c4 /sys/src/cmd/rio/rio.c:589
sending=0x0
scrolling=0x0
moving=0x0
winput=0x0
xy=0x298
inside=0x0
tmp=0xfefefefe
w=0x0
oin=0xfefefefe
band=0xfefefefe
r=0xfefefefe
launcher386(arg=0x0,f=0x1f0c)+0x10 /sys/src/libthread/386.c:10
0xfefefefe ?file?:0
What's fixed:
This patch makes /sys/src/cmd/rio/wind.c:/^wclosewin to zero out the just-freed space in hidden[].
- Iaroslav
|