• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cl_asan -Od %s -Fe%t
2 // RUN: %run %t
3 
4 #include <windows.h>
5 
thread_proc(void *)6 DWORD WINAPI thread_proc(void *) {
7   volatile char stack_buffer[42];
8   for (int i = 0; i < sizeof(stack_buffer); ++i)
9     stack_buffer[i] = 42;
10   return 0x42;
11 }
12 
main()13 int main() {
14   DWORD exitcode;
15   HANDLE thr = CreateThread(NULL, 0, thread_proc, NULL, CREATE_SUSPENDED, NULL);
16   ResumeThread(thr);
17   if (thr == 0)
18     return 1;
19   if (WAIT_OBJECT_0 != WaitForSingleObject(thr, INFINITE))
20     return 2;
21 
22   GetExitCodeThread(thr, &exitcode);
23   if (exitcode != 0x42)
24     return 3;
25   CloseHandle(thr);
26 }
27 
28