- 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