1 /* 2 * Author: Skywing (skywing@valhallalegends.com) 3 * Date: 09/09/2003 4 * Purpose: Probe for PsUnblockThread crash due to double-acquire spin lock. 5 */ 6 7 #define WIN32_NO_STATUS 8 #include <windows.h> 9 #include <stdio.h> 10 11 #define NTOS_MODE_USER 12 #include <ndk/ntndk.h> 13 14 DWORD __stdcall threadfunc(void* UNREFERENCED) 15 { 16 printf("Thread: Initialized\n"); 17 Sleep(2500); 18 printf("Thread: Terminating...\n"); 19 return 0; 20 } 21 22 int main(int ac, char **av) 23 { 24 DWORD id; 25 HANDLE Thread; 26 27 Thread = CreateThread(0, 0, threadfunc, 0, 0, &id); 28 printf("Main: ThreadId for new thread is %08lx\n", id); 29 printf("Main: Waiting on thread...\n"); 30 WaitForSingleObject(Thread, INFINITE); 31 printf("Main: OK, somebody fixed the PsUnblockThread spinlock double-acquire crash\n"); 32 NtClose(Thread); 33 printf("Main: Terminating...\n"); 34 return 0; 35 } 36