Sunday, December 11, 2005, 11:23:18 AM, Peter Beutner wrote:
Vitaliy Margolen schrieb:
Sunday, December 11, 2005, 10:36:39 AM, Peter Beutner wrote:
Vitaliy Margolen schrieb:
Sunday, December 11, 2005, 9:07:06 AM, Peter Beutner wrote:
Vitaliy Margolen schrieb:
ChangeLog: ntdll: Program could modify Dr* registers in segv_handler too.
Doesn't every exception handler could modify these registers? So probably it would be better to put this check into RtlRaiseException?
Nope can't. __regs_RtlRaiseException is common for all the platforms (implemented in dlls/ntdll/exception.c). While Dr* registers are not available on all the platforms.
What about putting some #ifdef __i386__ ... #endif around it?
That's what signal_*.c are for...
The name suggests it's more about signal handling than a place to throw every arch dependent code in it ;) But that's not the point. I just thought it might not be the best solution to duplicate that check in every signal handler. Besides what about somebody changes the Dr* registers in an exception handler invoked by an exception raised by the application via RaiseException(i.e. not via a signal handler called by the kernel)? *Every* installed exception handler can change the registers in the CONTEXT structure, thats why I think it would be the easiest way to implement it in __regs_RtlRaiseException.
Good point but it needs a test. Besides I'm not sure that we will change any registers in that case at all. (just checked and no, we won't change any registers).