>> - storing context in server while entering USR1 signal handler (to be
>> done without races, which will require some more work, as the server
>> doesn't synchronize with the USR1 handler)

I've implemented this in my local tree, and it works fine: Easy CD-DA gets further now. It is still being nailed by the copy protection system (called "Armadillo" apparently) but the splash screen appears now :)

Today the BT engineer reconnected our line. So, now I just have to wait for ADSL to be activated, then I can flush my patch queue and get back to some real work.

To eliminate the race at the top of SIGUSR1 handler I made server get_thread_context/set_thread_context RPCs fail with STATUS_RETRY if the context has not yet been uploaded, and adjusted the ntdll code to spin in a loop yielding the timeslice whenever it receives STATUS_RETRY. It's not fancy but it works, and on average only 1 yield is needed (obvious in hindsight I guess).

The SIGCONTEXT is reloaded when the context override is cancelled, so set_thread_context on a suspended thread works as expected.

thanks -mike



Reply via email to