Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

96 lines
1.2 KiB

#include "headers.hxx"
HINSTANCE hResourceModuleHandle = 0;
const wchar_t* RUNTIME_NAME = L"coretest";
DWORD DEFAULT_LOGGING_OPTIONS = Burnslib::Log::OUTPUT_TYPICAL;
// set the HeapFlags to trace allocations to see the leak detection
void
raise()
{
// force an AV
char* null = 0;
*null = 'X';
}
void
DumpStack(DWORD64 stackTrace[], size_t traceMax)
{
for (int i = 0; stackTrace[i] and (i <= traceMax); ++i)
{
::OutputDebugString(
StackTrace::LookupAddress(stackTrace[i]).c_str());
::OutputDebugString(L"\r\n");
}
}
void
f3()
{
const size_t TRACE_MAX = 10;
DWORD64 stackTrace[TRACE_MAX];
size_t traceMax = TRACE_MAX;
wchar_t* leak = new wchar_t;
*leak = L'X';
__try
{
raise();
}
__except(
StackTrace::TraceFilter(
stackTrace,
traceMax,
(GetExceptionInformation())->ContextRecord))
{
DumpStack(stackTrace, traceMax);
}
}
void
f2()
{
LOG_FUNCTION2(f2, L"this is f2");
f3();
}
void
f1()
{
LOG_FUNCTION(f1);
f2();
}
VOID
_cdecl
main(int, char **)
{
LOG_FUNCTION(main);
f1();
LOG(L"now ending main");
}