src/os/windows/vm/os_windows.cpp

Print this page

        

*** 1,7 **** /* ! * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright 1997-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 140,149 **** --- 140,152 ---- void os::run_periodic_checks() { return; } #ifndef _WIN64 + // previous UnhandledExceptionFilter, if there is one + static LPTOP_LEVEL_EXCEPTION_FILTER prev_uef_handler = NULL; + LONG WINAPI Handle_FLT_Exception(struct _EXCEPTION_POINTERS* exceptionInfo); #endif void os::init_system_properties_values() { /* sysclasspath, java_home, dll_dir */ {
*** 258,268 **** Arguments::set_endorsed_dirs(buf); #undef ENDORSED_DIR } #ifndef _WIN64 ! SetUnhandledExceptionFilter(Handle_FLT_Exception); #endif // Done return; } --- 261,272 ---- Arguments::set_endorsed_dirs(buf); #undef ENDORSED_DIR } #ifndef _WIN64 ! // set our UnhandledExceptionFilter and save any previous one ! prev_uef_handler = SetUnhandledExceptionFilter(Handle_FLT_Exception); #endif // Done return; }
*** 1988,1997 **** --- 1992,2008 ---- // Mask out pending FLT exceptions ctx->FloatSave.StatusWord &= 0xffffff00; return EXCEPTION_CONTINUE_EXECUTION; } } + + if (prev_uef_handler != NULL) { + // We didn't handle this exception so pass it to the previous + // UnhandledExceptionFilter. + return (prev_uef_handler)(exceptionInfo); + } + return EXCEPTION_CONTINUE_SEARCH; } #else //_WIN64 /* On Windows, the mxcsr control bits are non-volatile across calls