notoskrnl.exe: Fix the stack overflow bugs in raising exceptions(DLL_PROCESS_DETACH processing for DllMain in ntoskrnl.c)

Dmitry Timoshkov dmitry at codeweavers.com
Sat Oct 11 07:38:14 CDT 2008


"Anton Rudnev" <mibori at etersoft.ru> wrote:

> --- a/dlls/ntoskrnl.exe/ntoskrnl.c
> +++ b/dlls/ntoskrnl.exe/ntoskrnl.c
> @@ -886,14 +886,20 @@ NTSTATUS WINAPI PsSetCreateProcessNotifyRoutine( PCREATE_PROCESS_NOTIFY_ROUTINE
>  BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
>  {
>      LARGE_INTEGER count;
> +    static vectored_handler_added = NULL;
>  
>      switch(reason)
>      {
>      case DLL_PROCESS_ATTACH:
>          DisableThreadLibraryCalls( inst );
> -        RtlAddVectoredExceptionHandler( TRUE, vectored_handler );
> +        vectored_handler_added = RtlAddVectoredExceptionHandler( TRUE, vectored_handler );
>          KeQueryTickCount( &count );  /* initialize the global KeTickCount */
>          break;
> +    case DLL_PROCESS_DETACH:
> +        if(vectored_handler_added){
> +            RtlRemoveVectoredExceptionHandler(vectored_handler_added);
> +            vectored_handler_added = NULL;
> +        }
>      }
>      return TRUE;
>  }

What you want is find out why RtlAddVectoredExceptionHandler fails for you,
because it shouldn't fail normally.

-- 
Dmitry.



More information about the wine-devel mailing list