Skip to content
  • Tamar Christina's avatar
    Replaced SEH handles with VEH handlers which should work uniformly across x86 and x64 · 5200bdeb
    Tamar Christina authored
    Summary:
    On Windows, the default action for things like division by zero and
    segfaults is to pop up a Dr. Watson error reporting dialog if the exception
    is unhandled by the user code.
    
    This is a pain when we are SSHed into a Windows machine, or when we
    want to debug a problem with gdb (gdb will get a first and second chance to
    handle the exception, but if it doesn't the pop-up will show).
    
    veh_excn provides two macros, `BEGIN_CATCH` and `END_CATCH`, which
    will catch such exceptions in the entire process and die by
    printing a message and calling `stg_exit(1)`.
    
    Previously this code was handled using SEH (Structured Exception Handlers)
    however each compiler and platform have different ways of dealing with SEH.
    
    `MSVC` compilers have the keywords `__try`, `__catch` and `__except` to have the
    compiler generate the appropriate SEH handler code for you.
    
    `MinGW` compilers have no such keywords and require you to manually set t...
    5200bdeb