Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Side by Side Diff: util/mach/exc_server_variants.h

Issue 1066243002: Accept non-fatal resource exceptions without generating crash reports (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Swallow non-fatal EXC_RESOURCE Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/mac/catch_exception_tool.cc ('k') | util/mach/exc_server_variants.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Crashpad Authors. All rights reserved. 1 // Copyright 2014 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 std::set<mach_msg_id_t> MachMessageServerRequestIDs() override; 109 std::set<mach_msg_id_t> MachMessageServerRequestIDs() override;
110 mach_msg_size_t MachMessageServerRequestSize() override; 110 mach_msg_size_t MachMessageServerRequestSize() override;
111 mach_msg_size_t MachMessageServerReplySize() override; 111 mach_msg_size_t MachMessageServerReplySize() override;
112 112
113 private: 113 private:
114 scoped_ptr<internal::UniversalMachExcServerImpl> impl_; 114 scoped_ptr<internal::UniversalMachExcServerImpl> impl_;
115 115
116 DISALLOW_COPY_AND_ASSIGN(UniversalMachExcServer); 116 DISALLOW_COPY_AND_ASSIGN(UniversalMachExcServer);
117 }; 117 };
118 118
119 //! \brief Recovers the original exception, first exception code, and signal
120 //! from the encoded form of the first exception code delivered with
121 //! `EXC_CRASH` exceptions.
122 //!
123 //! `EXC_CRASH` exceptions are generated when the kernel has committed to
124 //! terminating a process as a result of a core-generating POSIX signal and, for
125 //! hardware exceptions, an earlier Mach exception. Information about this
126 //! earlier exception and signal is made available to the `EXC_CRASH` handler
127 //! via its `code[0]` parameter. This function recovers the original exception,
128 //! the value of `code[0]` from the original exception, and the value of the
129 //! signal responsible for process termination.
130 //!
131 //! \param[in] code_0 The first exception code (`code[0]`) passed to a Mach
132 //! exception handler in an `EXC_CRASH` exception. It is invalid to call
133 //! this function with an exception code from any exception other than
134 //! `EXC_CRASH`.
135 //! \param[out] original_code_0 The first exception code (`code[0]`) passed to
136 //! the Mach exception handler for a hardware exception that resulted in the
137 //! generation of a POSIX signal that caused process termination. If the
138 //! signal that caused termination was not sent as a result of a hardware
139 //! exception, this will be `0`. Callers that do not need this value may
140 //! pass `nullptr`.
141 //! \param[out] signal The POSIX signal that caused process termination. Callers
142 //! that do not need this value may pass `nullptr`.
143 //!
144 //! \return The original exception for a hardware exception that resulted in the
145 //! generation of a POSIX signal that caused process termination. If the
146 //! signal that caused termination was not sent as a result of a hardware
147 //! exception, this will be `0`.
148 exception_type_t ExcCrashRecoverOriginalException(
149 mach_exception_code_t code_0,
150 mach_exception_code_t* original_code_0,
151 int* signal);
152
153 //! \brief Computes an approriate successful return value for an exception 119 //! \brief Computes an approriate successful return value for an exception
154 //! handler function. 120 //! handler function.
155 //! 121 //!
156 //! For exception handlers that respond to state-carrying behaviors, when the 122 //! For exception handlers that respond to state-carrying behaviors, when the
157 //! handler is called by the kernel (as it is normally), the kernel will attempt 123 //! handler is called by the kernel (as it is normally), the kernel will attempt
158 //! to set a new thread state when the exception handler returns successfully. 124 //! to set a new thread state when the exception handler returns successfully.
159 //! Other code that mimics the kernel’s exception-delivery semantics may 125 //! Other code that mimics the kernel’s exception-delivery semantics may
160 //! implement the same or similar behavior. In some situations, it is 126 //! implement the same or similar behavior. In some situations, it is
161 //! undesirable to set a new thread state. If the exception handler were to 127 //! undesirable to set a new thread state. If the exception handler were to
162 //! return unsuccessfully, however, the kernel would continue searching for an 128 //! return unsuccessfully, however, the kernel would continue searching for an
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 //! large as \a old_state_count. 199 //! large as \a old_state_count.
234 void ExcServerCopyState(exception_behavior_t behavior, 200 void ExcServerCopyState(exception_behavior_t behavior,
235 ConstThreadState old_state, 201 ConstThreadState old_state,
236 mach_msg_type_number_t old_state_count, 202 mach_msg_type_number_t old_state_count,
237 thread_state_t new_state, 203 thread_state_t new_state,
238 mach_msg_type_number_t* new_state_count); 204 mach_msg_type_number_t* new_state_count);
239 205
240 } // namespace crashpad 206 } // namespace crashpad
241 207
242 #endif // CRASHPAD_UTIL_MACH_EXC_SERVER_VARIANTS_H_ 208 #endif // CRASHPAD_UTIL_MACH_EXC_SERVER_VARIANTS_H_
OLDNEW
« no previous file with comments | « tools/mac/catch_exception_tool.cc ('k') | util/mach/exc_server_variants.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698