I wrote: > Isn't there some way we can get the timer completion routine to be run > by the signal thread instead? This coding seems pretty unreliable to me > even without QQ's patch.
After further thought it seems like the right thing to do is to redesign port/win32/timer.c so that it sets up a separate thread whose responsibility is to wait for timeouts and deliver a SIGALRM signal back to the main thread when they happen. It's probably a bit late to consider doing this for 8.1 :-( I've temporarily disabled Qingqing's patch by the expedient of removing the UNBLOCKED_SIGNAL_QUEUE() check in the macro, so that the out-of-line routine is always called (since we're going to do a kernel call anyway, one extra layer of subroutine call doesn't seem very important). We can put it back after fixing timer.c. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings