blob: 7ee7e6812d1a33ed2a7650e78aeca336c5864add (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include <stdio.h>
#include <windows.h>
// make sure we only ever spawn one thread
DWORD tid = -1;
DWORD WINAPI CrashingThread(LPVOID lpParameter) {
// not a very friendly DLL
volatile int* x = (int*)0x0;
*x = 1;
return 0;
}
BOOL WINAPI DllMain(HANDLE hinstDLL, DWORD dwReason, LPVOID lpvReserved) {
if (tid == (DWORD)-1)
// we have to crash on another thread because LoadLibrary() will
// catch memory access errors and return failure to the calling process
CreateThread(nullptr, // default security attributes
0, // use default stack size
CrashingThread, // thread function name
nullptr, // argument to thread function
0, // use default creation flags
&tid); // returns the thread identifier
return TRUE;
}
|