[ros-dev] Re: [ros-svn] [ion] 17811: Major refactoring of the exception handling code + misc fixes:

Hartmut Birr osexpert at gmail.com
Mon Sep 12 03:15:06 CEST 2005


Hi,

there exist more problems. Some functions (for instance
KiDispatchException) leave a TRY block with a return statement. Quoting
http://www.reactos.com/wiki/index.php/PSEH: /"Absolutely do not use
*return* inside a try block/: this will lead to crashes, or worse
undetectable corruption, because some per-thread system state will still
refer to local variables of the function you've returned from."

- Hartmut

Alex Ionescu wrote:

> Hartmut Birr wrote:
>
>> Hi,
>>
>> calling RaiseException(EXCEPTION_ACCESS_VIOLATION,
>> EXCEPTION_NONCONTINUABLE, 0, NULL) from user mode does crash reactos.
>>
>> - Hartmut
>>
>> (lib\rtl\exception.c:29) RtlRaiseException(Status 0064fea8)
>> (lib\rtl\exception.c:36) ExceptionAddress 7c801fcc
>> (ntoskrnl\ke\exception.c:94) KiRaiseException
>> (ntoskrnl\ke\i386\exp.c:933) KiDispatchException() called
>> (lib\rtl\exception.c:75) RtlRaiseStatus(Status 0x80000002)
>>  
>>
> ^^^ It seems that the user-mode context or exception frame is not
> properly aligned (or the Probe check is broken)... I will test and see
> which of the probe fails.
>
>> (lib\rtl\i386\exception.c:59) RtlDispatchException(): 87032998, 870326c8
>> (lib\rtl\i386\exception.c:64) RegistrationFrame is 0x87032D30
>> (lib\rtl\i386\exception.c:90) Invalid exception frame
>>  
>>
> ^^^ RtlpGetStackLimits should not be shared, because the limits have
> to be taken from the thread's teb, not KPCR. This is my fault, I'll
> fix it right now.
>
> Best regards,
> Alex Ionescu
> _______________________________________________
> Ros-dev mailing list
> Ros-dev at reactos.com
> http://reactos.com:8080/mailman/listinfo/ros-dev
>



More information about the Ros-dev mailing list