30 #ifndef CLIENT_LINUX_HANDLER_EXCEPTION_HANDLER_H_ 31 #define CLIENT_LINUX_HANDLER_EXCEPTION_HANDLER_H_ 40 #include <sys/ucontext.h> 115 size_t crash_context_size,
132 void *callback_context,
133 bool install_handler,
134 const int server_fd);
138 return minidump_descriptor_;
142 minidump_descriptor_ = descriptor;
146 crash_handler_ = callback;
168 void* callback_context);
182 pid_t child_blamed_thread,
183 const string& dump_path,
185 void* callback_context);
192 struct ucontext context;
193 #if !defined(__ARM_EABI__) 201 return crash_generation_client_.get() != NULL;
208 const uint8_t identifier[
sizeof(
MDGUID)],
209 uintptr_t start_address,
224 static bool InstallHandlersLocked();
226 static void RestoreHandlersLocked();
228 void PreresolveSymbols();
230 void SendContinueSignalToChild();
231 void WaitForContinueSignal();
233 static void SignalHandler(
int sig, siginfo_t* info,
void* uc);
234 bool HandleSignal(
int sig, siginfo_t* info,
void* uc);
235 static int ThreadEntry(
void* arg);
236 bool DoDump(pid_t crashing_process,
const void* context,
237 size_t context_size);
241 void*
const callback_context_;
252 static std::vector<ExceptionHandler*> *handler_stack_;
253 static pthread_mutex_t handler_stack_mutex_;
273 #endif // CLIENT_LINUX_HANDLER_EXCEPTION_HANDLER_H_ void RegisterAppMemory(void *ptr, size_t length)
void AddMappingInfo(const string &name, const uint8_t identifier[sizeof(MDGUID)], uintptr_t start_address, size_t mapping_size, size_t file_offset)
std::list< MappingEntry > MappingList
bool(* HandlerCallback)(const void *crash_context, size_t crash_context_size, void *context)
ExceptionHandler(const MinidumpDescriptor &descriptor, FilterCallback filter, MinidumpCallback callback, void *callback_context, bool install_handler, const int server_fd)
bool IsOutOfProcess() const
static bool WriteMinidumpForChild(pid_t child, pid_t child_blamed_thread, const string &dump_path, MinidumpCallback callback, void *callback_context)
bool(* MinidumpCallback)(const MinidumpDescriptor &descriptor, void *context, bool succeeded)
void UnregisterAppMemory(void *ptr)
bool(* FilterCallback)(void *context)
void set_minidump_descriptor(const MinidumpDescriptor &descriptor)
bool SimulateSignalDelivery(int sig)
struct _libc_fpstate float_state
const MinidumpDescriptor & minidump_descriptor() const
wstring dump_path() const
void set_crash_handler(HandlerCallback callback)
std::list< AppMemory > AppMemoryList