Beispiel #1
0
        // CRT SIGTERM signal handler
        void crash_handler::sigterm_handler(int)
        {
            // Termination request (SIGTERM)

            // Retrieve exception information
            EXCEPTION_POINTERS* pExceptionPtrs = NULL;
            get_exception_pointers(0, &pExceptionPtrs);

            // Write minidump file
            create_mini_dump(pExceptionPtrs);

            // Terminate process
            TerminateProcess(GetCurrentProcess(), 1);    
        }
Beispiel #2
0
        // CRT Pure virtual method call handler
        void __cdecl crash_handler::pure_call_handler()
        {
            // Pure virtual function call

            // Retrieve exception information
            EXCEPTION_POINTERS* pExceptionPtrs = NULL;
            get_exception_pointers(0, &pExceptionPtrs);

            // Write minidump file
            create_mini_dump(pExceptionPtrs);

            // Terminate process
            TerminateProcess(GetCurrentProcess(), 1);    
        }
Beispiel #3
0
        // CRT unexpected() call handler
        void __cdecl crash_handler::unexpected_handler()
        {
            // Unexpected error (unexpected() function was called)

            // Retrieve exception information
            EXCEPTION_POINTERS* pExceptionPtrs = NULL;
            get_exception_pointers(0, &pExceptionPtrs);

            // Write minidump file
            create_mini_dump(pExceptionPtrs);

            // Terminate process
            TerminateProcess(GetCurrentProcess(), 1);    	    
        }
Beispiel #4
0
        // CRT SIGABRT signal handler
        void crash_handler::sigabrt_handler(int)
        {
            // Caught SIGABRT C++ signal

            // Retrieve exception information
            EXCEPTION_POINTERS* pExceptionPtrs = NULL;
            get_exception_pointers(0, &pExceptionPtrs);

            // Write minidump file
            create_mini_dump(pExceptionPtrs);

            // Terminate process
            TerminateProcess(GetCurrentProcess(), 1);   

        }
Beispiel #5
0
        // CRT new operator fault handler
        int __cdecl crash_handler::new_handler(size_t)
        {
            // 'new' operator memory allocation exception

            // Retrieve exception information
            EXCEPTION_POINTERS* pExceptionPtrs = NULL;
            get_exception_pointers(0, &pExceptionPtrs);

            // Write minidump file
            create_mini_dump(pExceptionPtrs);

            // Terminate process
            TerminateProcess(GetCurrentProcess(), 1);

            // Unreacheable code
            return 0;
        }
Beispiel #6
0
static void generate_report()
{
    EXCEPTION_RECORD local_exception_record;
    CONTEXT local_context;

    EXCEPTION_POINTERS local_exception_pointers;

    local_exception_pointers.ExceptionRecord = &local_exception_record;
    local_exception_pointers.ContextRecord = &local_context;

    if (!exception_pointers_)
    {
        get_exception_pointers(&local_exception_pointers);
        exception_pointers_ = &local_exception_pointers;
    }

    create_minidump();
    ::TerminateProcess(::GetCurrentProcess(), 100500);
}
Beispiel #7
0
        // CRT invalid parameter handler
        void __cdecl crash_handler::invalid_parameter_handler(
            const wchar_t* /* expression */, 
            const wchar_t* /* function */, 
            const wchar_t* /* file */, 
            unsigned int /* line */, 
            uintptr_t pReserved)
        {
            pReserved;

            // Invalid parameter exception

            // Retrieve exception information
            EXCEPTION_POINTERS* pExceptionPtrs = NULL;
            get_exception_pointers(0, &pExceptionPtrs);

            // Write minidump file
            create_mini_dump(pExceptionPtrs);

            // Terminate process
            TerminateProcess(GetCurrentProcess(), 1);    

        }