]> git.sesse.net Git - casparcg/blobdiff - shell/main.cpp
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / shell / main.cpp
index aabc6ab9b867c8adf24287c87154765315e25c68..f9e827305259949c6d32282e2a362bc8878a0bd1 100644 (file)
@@ -66,6 +66,8 @@
 #include <boost/property_tree/xml_parser.hpp>\r
 #include <boost/foreach.hpp>\r
 \r
+#include <signal.h>\r
+\r
 using namespace caspar;\r
        \r
 // NOTE: This is needed in order to make CComObject work since this is not a real ATL project.\r
@@ -155,10 +157,12 @@ LONG WINAPI UserUnhandledExceptionFilter(EXCEPTION_POINTERS* info)
                        << L"Flag:" << info->ExceptionRecord->ExceptionFlags << L"\n"\r
                        << L"Info:" << info->ExceptionRecord->ExceptionInformation << L"\n"\r
                        << L"Continuing execution. \n#######################";\r
+\r
+               CASPAR_LOG_CALL_STACK();\r
        }\r
        catch(...){}\r
 \r
-    return EXCEPTION_EXECUTE_HANDLER;\r
+    return EXCEPTION_CONTINUE_EXECUTION;\r
 }\r
 \r
 void run()\r
@@ -265,9 +269,15 @@ void run()
        CASPAR_LOG(info) << "Successfully shutdown CasparCG Server.";\r
 }\r
 \r
+void on_abort(int)\r
+{\r
+       CASPAR_THROW_EXCEPTION(invalid_operation() << msg_info("abort called"));\r
+}\r
+\r
 int main(int argc, wchar_t* argv[])\r
 {      \r
        SetUnhandledExceptionFilter(UserUnhandledExceptionFilter);\r
+       signal(SIGABRT, on_abort);\r
 \r
        std::wcout << L"Type \"q\" to close application." << std::endl;\r
        \r