Author: Ratko V Tomic
Date: 08:09:19 10/08/99
Go up one level in this thread
The problem was that under Windows 95 and 3.1 Rebel would lock up while thinking. The hangup would occur more often on slower machines (almost in every game on an old P90). I used Soft-ICE and traced the problem to the mouse interrupt (i.e. a far call mouse driver makes into the application, when there is a mouse event). The hangup would occur only if the mouse interrupt was reentered by another mouse interrupt, but it wouldn't occur every time reentry occured, i.e. there was likely something the program was doing in the mouse interrupt service (e.g. calling some system call) which wasn't reentrant and the second interrupt stepped on it. That was also consistent with the machine speed dependency, since it was more likely that a slower machine will have larger reentrancy window. So I wrote a small TSR (in C, using CodeRunner library; the TSR uses only 432 bytes of memory after it loads since it discards its initialization code & data) which watched mouse API and whenever application installed mouse interrupt handler, I would intercept it an redirect it to go through a small piece of code which incremented entry count and if the 2nd entry was attempted it would return to the mouse handler without entering the application's handler. That eliminated all hangups on 3.1 and 95 (I didn't see hangups under 98 or in plain DOS, which means that whatever system calls Rebel made, they were not reentrant in 95/3.1 but were reentrant in DOS or 98). I emailed the TSR (called fix.exe) to Ed and some friends who used Rebel and it is now included on the Rebel 9/10 CD and in the download area of the Rebel web page (as well as few other free download places; it is called fix.exe or tsr.exe, that's the same code). So, I guess it must have solved problems at least with some other folks.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.