Yesterday I got a reply and a diff patch to the ws_drv from Matthieu Herb on this issue..
http://marc.theaimsgroup.com/?l=openbsd-ar...92269628962&w=2The issue basically boils down to the order of conditions in a while loop, the original version read a byte from a buffer before checking the destination buffer length.. this caused a discard of that byte if the buffer was full. Since the events are multi-byte (just being copied 1 byte at a time) subsequent events would all be misaligned and this would happen on the first buffer overrun.
The posting above contains the source of the patch.
Attached here is a compiled version of that driver (built by Matthieu - many thanks I didn't have XF4 cvs built on my Z) and I have built an md5sum to go with it.
Replace /usr/X11R6/lib/modules/input/ws_drv.so with this version and I think you will find things a little more stable. - sorry you will have to rename it back to ws_drv.so - I couldn't post it with that extension.
On a seprate note you may get processes being put into a STOP state if your Zaurus is very busy (seems to happen to avoid thrashing). This unfortunately happens for thinks like xfwm which isn't greatly helpful since you need a Window Manager running to do most things in X. You can recover as follows...
i. Switch to a text vt using Ctrl-Alt-F2 (you can switch back to ttyC0/vt01 with Ctrl-Alt-F1)
ii. Login as root
iii. Run the top command and look for the processes marked 'stop' that may be effecting your X session.
iv. hit k (for kill)
v. enter '-CONT <pid>' (without the quotes and where <pid> is the process ID of the process you want to resume.
vi. hit q to quit from top when done.
Note that if something heavy is immediately pushing your process back to sleep you can use kill -STOP <pid> to suspend that process until you have managed to deal with your X session then you can kill -CONT that process to resume it.
This is far from ideal so I'm now looking to see if there is a way of flagging stuff so it doesn't get stopped like this (or disabling the feature). - If anyone knows how to do this then that would be great
- Andy