[Bug 211123] Throw C++ exception from a signal handler.

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Thu Jul 14 19:01:14 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211123

            Bug ID: 211123
           Summary: Throw C++ exception from a signal handler.
           Product: Base System
           Version: 9.2-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: cwittmann at infosearchintl.com

Created attachment 172529
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=172529&action=edit
Throwing C++ exception from a signal handler.

I'm writing a multithreaded C++ server to run on FreeBSD AMD64 so I need to
throw C++ exceptions from within a signal handler.  Windows supports C++
exceptions from as signal handler as expected.  On FreeBSD 10.2, even the
-fnon-call-exceptions switch doesn't do a thing.

Is there a way to build an AMD64 kernel that supports signal-handler exception
throwing?


// Exceptions.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <signal.h>


using namespace std;

void handler(int signal)
{
    throw 23;
}


int _tmain(int argc, _TCHAR* argv[])
{
    signal(SIGINT, handler);
    signal(SIGSEGV, handler);

    try
    {
        int* p = NULL;
        *p += *p;

        //raise(SIGINT);
        cout << "... no catchie ..." << endl;
    }
    catch (...)
    {
        cout << "CAUGHT THE MOFO!" << endl;
    }

        return 0;
}

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list