Lines Matching defs:handler

34 // Typically a signal handler should not need to deal with signals that occur within it.
48 // thread running the signal handler.
49 // 3. set the handler for SIGSEGV and SIGABRT to a secondary signal handler.
57 // our secondary signal handler gets called in a signal context. This results in
73 // Static fault manger object accessed by signal handler.
78 VLOG(signals)<< "Caught unknown SIGSEGV in ART fault handler - chaining to next handler.";
81 // Signal handler called on SIGSEGV.
86 // Signal handler for dealing with a nested signal.
122 // Set our signal handler now.
127 // Make sure our signal handler is called before any user handlers.
160 // Now set up the nested signal handler.
170 // The action for SIGSEGV should be the default handler now.
172 // Unblock the signals we allow so that they can be delivered in the signal handler.
181 // handler.
186 // Explicitly mask out SIGSEGV and SIGABRT from the nested signal handler. This
188 // nested signal handler.
199 // Catch handled signals to invoke our nested handler.
204 PLOG(ERROR) << "Unable to set up nested signal handler";
211 // our nested signal handler will be invoked and this will longjmp to the saved
214 for (const auto& handler : other_handlers_) {
215 if (handler->Action(sig, info, context)) {
221 PLOG(ERROR) << "Unable to restore signal handler";
236 PLOG(ERROR) << "Unable to restore signal handler";
250 // If the handler tries to call malloc, it will deadlock.
253 VLOG(signals) << "in generated code, looking for handler";
254 for (const auto& handler : generated_code_handlers_) {
255 VLOG(signals) << "invoking Action on handler " << handler;
256 if (handler->Action(sig, info, context)) {
258 // In test mode we want to fall through to stack trace handler
264 // signal handler to the appropriate place.
281 // Pass this on to the next handler in the chain, or the default if none.
285 void FaultManager::AddHandler(FaultHandler* handler, bool generated_code) {
288 generated_code_handlers_.push_back(handler);
290 other_handlers_.push_back(handler);
294 void FaultManager::RemoveHandler(FaultHandler* handler) {
295 auto it = std::find(generated_code_handlers_.begin(), generated_code_handlers_.end(), handler);
300 auto it2 = std::find(other_handlers_.begin(), other_handlers_.end(), handler);
305 LOG(FATAL) << "Attempted to remove non existent handler " << handler;
308 // This function is called within the signal handler. It checks that
391 // Null pointer fault handler
398 // Suspension fault handler
405 // Stack overflow fault handler
412 // Stack trace handler, used to help get a stack trace from SIGSEGV inside of compiled code.
436 // To test the nested signal handler we raise a signal here. This will cause the
437 // nested signal handler to be called and perform a longjmp back to the setjmp
444 return false; // Return false since we want to propagate the fault to the main signal handler.