Lines Matching defs:handler

21  * \brief System handler handler override
173 /* If no handler present (how could that be?), don't handle. */
176 DBGPRINT(("qpCrashHandler::unhandledExceptionFilter(): no crash handler registered\n"));
187 /* Acquire crash handler lock. Otherwise we might get strange behavior when multiple threads enter crash handler simultaneously. */
239 /* Don't execute crash handler function if debugger is present. */
246 /* Acquire crash handler lock. */
264 qpCrashHandler* handler = (qpCrashHandler*)deCalloc(sizeof(qpCrashHandler));
266 if (!handler)
267 return handler;
271 handler->crashHandlerFunc = handlerFunc ? handlerFunc : defaultCrashHandler;
272 handler->handlerUserPointer = userPointer;
274 /* Create lock for crash handler. \note Has to be recursive or otherwise crash in assert failure causes deadlock. */
278 handler->crashHandlerLock = deMutex_create(&attr);
280 if (!handler->crashHandlerLock)
282 deFree(handler);
287 qpCrashInfo_init(&handler->crashInfo);
288 handler->crashAddress = 0;
291 handler->oldExceptionFilter = SetUnhandledExceptionFilter(unhandledExceptionFilter);
299 g_crashHandler = handler;
300 return handler;
303 void qpCrashHandler_destroy (qpCrashHandler* handler)
307 DE_ASSERT(g_crashHandler == handler);
310 SetUnhandledExceptionFilter(handler->oldExceptionFilter);
313 deFree(handler);
321 void qpCrashHandler_writeCrashInfo (qpCrashHandler* handler, qpWriteCrashInfoFunc writeInfo, void* userPtr)
333 qpCrashInfo_write(&handler->crashInfo, writeInfo, userPtr);
350 if (handler->crashAddress != 0)
352 BOOL symInfoOk = SymFromAddr(process, (DWORD64)handler->crashAddress, 0, symInfo);
354 writeInfoFormat(writeInfo, userPtr, " at %p %s%s\n", handler->crashAddress,
469 qpCrashHandler* handler = (qpCrashHandler*)deCalloc(sizeof(qpCrashHandler));
471 if (!handler)
472 return handler;
476 handler->crashHandlerFunc = handlerFunc ? handlerFunc : defaultCrashHandler;
477 handler->handlerUserPointer = userPointer;
479 qpCrashInfo_init(&handler->crashInfo);
481 g_crashHandler = handler;
497 sigaction(s_signals[sigNdx].signalNum, &action, &handler->oldHandlers[sigNdx]);
501 return handler;
504 void qpCrashHandler_destroy (qpCrashHandler* handler)
508 DE_ASSERT(g_crashHandler == handler);
517 sigaction(s_signals[sigNdx].signalNum, &handler->oldHandlers[sigNdx], DE_NULL);
523 deFree(handler);