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

Side by Side Diff: tools/mac/catch_exception_tool.cc

Issue 1049023003: Add ExcServerCopyState() (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Address review feedback 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 | « handler/mac/crash_report_exception_handler.cc ('k') | util/mach/exc_server_variants.h » ('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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 ExcCrashRecoverOriginalException(code[0], &original_code_0, &signal); 126 ExcCrashRecoverOriginalException(code[0], &original_code_0, &signal);
127 fprintf(options_.file, 127 fprintf(options_.file,
128 ", original exception %s, original code[0] %lld, signal %s", 128 ", original exception %s, original code[0] %lld, signal %s",
129 ExceptionToString(original_exception, 129 ExceptionToString(original_exception,
130 kUseFullName | kUnknownIsNumeric).c_str(), 130 kUseFullName | kUnknownIsNumeric).c_str(),
131 original_code_0, 131 original_code_0,
132 SignalToString(signal, kUseFullName | kUnknownIsNumeric).c_str()); 132 SignalToString(signal, kUseFullName | kUnknownIsNumeric).c_str());
133 } 133 }
134 134
135 if (ExceptionBehaviorHasState(behavior)) { 135 if (ExceptionBehaviorHasState(behavior)) {
136 // If this is a state-carrying exception, make new_state something valid.
137 memcpy(
138 new_state,
139 old_state,
140 std::min(old_state_count, *new_state_count) * sizeof(old_state[0]));
141 *new_state_count = old_state_count;
142
143 std::string flavor_string = 136 std::string flavor_string =
144 ThreadStateFlavorToString(*flavor, kUseFullName | kUnknownIsNumeric); 137 ThreadStateFlavorToString(*flavor, kUseFullName | kUnknownIsNumeric);
145 fprintf(options_.file, 138 fprintf(options_.file,
146 ", flavor %s, old_state_count %d", 139 ", flavor %s, old_state_count %d",
147 flavor_string.c_str(), 140 flavor_string.c_str(),
148 old_state_count); 141 old_state_count);
149 } 142 }
150 143
151 fprintf(options_.file, "\n"); 144 fprintf(options_.file, "\n");
152 fflush(options_.file); 145 fflush(options_.file);
153 146
154 if (exception != EXC_CRASH && exception != kMachExceptionSimulated) { 147 if (exception != EXC_CRASH && exception != kMachExceptionSimulated) {
155 // Find another handler. 148 // Find another handler.
156 return KERN_FAILURE; 149 return KERN_FAILURE;
157 } 150 }
158 151
152 ExcServerCopyState(
153 behavior, old_state, old_state_count, new_state, new_state_count);
154
159 return ExcServerSuccessfulReturnValue(behavior, false); 155 return ExcServerSuccessfulReturnValue(behavior, false);
160 } 156 }
161 157
162 private: 158 private:
163 const Options& options_; 159 const Options& options_;
164 const std::string& me_; 160 const std::string& me_;
165 int* exceptions_handled_; 161 int* exceptions_handled_;
166 }; 162 };
167 163
168 void Usage(const std::string& me) { 164 void Usage(const std::string& me) {
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 304
309 return EXIT_SUCCESS; 305 return EXIT_SUCCESS;
310 } 306 }
311 307
312 } // namespace 308 } // namespace
313 } // namespace crashpad 309 } // namespace crashpad
314 310
315 int main(int argc, char* argv[]) { 311 int main(int argc, char* argv[]) {
316 return crashpad::CatchExceptionToolMain(argc, argv); 312 return crashpad::CatchExceptionToolMain(argc, argv);
317 } 313 }
OLDNEW
« no previous file with comments | « handler/mac/crash_report_exception_handler.cc ('k') | util/mach/exc_server_variants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698