gecko-dev/build/win32/crashinjectdll/crashinjectdll.cpp
Tom Ritter cc4335e0ce Bug 1411743 Resolve warnings in tests for MinGW: Cast -1 to DWORD, and ignore a result explicitly r=jimm
MozReview-Commit-ID: 82r05lMszXd

--HG--
extra : rebase_source : 628cdfe9b3743f4b107bef2977cb0a833032915c
2017-10-25 15:40:35 -05:00

39 lines
1.1 KiB
C++

/* 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;
}