blob: 3b6fd0013787333738185bc9d49b5a950048c0fa [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: crashpad::CrosCrashReportExceptionHandler Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="crashpad_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Crashpad
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacecrashpad.html">crashpad</a></li><li class="navelem"><a class="el" href="classcrashpad_1_1CrosCrashReportExceptionHandler.html">CrosCrashReportExceptionHandler</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classcrashpad_1_1CrosCrashReportExceptionHandler-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">crashpad::CrosCrashReportExceptionHandler Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>An exception handler that writes crash reports to the ChromeOS crash_reporter.
<a href="classcrashpad_1_1CrosCrashReportExceptionHandler.html#details">More...</a></p>
<p><code>#include &quot;handler/linux/cros_crash_report_exception_handler.h&quot;</code></p>
<div class="dynheader">
Inheritance diagram for crashpad::CrosCrashReportExceptionHandler:</div>
<div class="dyncontent">
<div class="center">
<img src="classcrashpad_1_1CrosCrashReportExceptionHandler.png" usemap="#crashpad::CrosCrashReportExceptionHandler_map" alt=""/>
<map id="crashpad::CrosCrashReportExceptionHandler_map" name="crashpad::CrosCrashReportExceptionHandler_map">
<area href="classcrashpad_1_1ExceptionHandlerServer_1_1Delegate.html" alt="crashpad::ExceptionHandlerServer::Delegate" shape="rect" coords="0,0,269,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:abcdd3304c4f1f928f45a3710523a340c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrosCrashReportExceptionHandler.html#abcdd3304c4f1f928f45a3710523a340c">CrosCrashReportExceptionHandler</a> (<a class="el" href="classcrashpad_1_1CrashReportDatabase.html">CrashReportDatabase</a> *database, const std::map&lt; std::string, std::string &gt; *process_annotations, const UserStreamDataSources *user_stream_data_sources)</td></tr>
<tr class="memdesc:abcdd3304c4f1f928f45a3710523a340c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new object that will pass reports to <code>/sbin/crash_reporter</code>. <a href="classcrashpad_1_1CrosCrashReportExceptionHandler.html#abcdd3304c4f1f928f45a3710523a340c">More...</a><br /></td></tr>
<tr class="separator:abcdd3304c4f1f928f45a3710523a340c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4eda1783adb5209e229a5d2e5a6fc9e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrosCrashReportExceptionHandler.html#aa4eda1783adb5209e229a5d2e5a6fc9e">HandleException</a> (pid_t client_process_id, uid_t client_uid, const <a class="el" href="structcrashpad_1_1ExceptionHandlerProtocol_1_1ClientInformation.html">ExceptionHandlerProtocol::ClientInformation</a> &amp;info, <a class="el" href="namespacecrashpad.html#af2d003bfc8632755c60ab27bd6d1c8ae">VMAddress</a> requesting_thread_stack_address=0, pid_t *requesting_thread_id=nullptr, <a class="el" href="structcrashpad_1_1UUID.html">UUID</a> *local_report_id=nullptr) override</td></tr>
<tr class="memdesc:aa4eda1783adb5209e229a5d2e5a6fc9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on receipt of a crash dump request from a client. <a href="classcrashpad_1_1CrosCrashReportExceptionHandler.html#aa4eda1783adb5209e229a5d2e5a6fc9e">More...</a><br /></td></tr>
<tr class="separator:aa4eda1783adb5209e229a5d2e5a6fc9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91421eef2fd1ce673d5fed995a14aef5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1CrosCrashReportExceptionHandler.html#a91421eef2fd1ce673d5fed995a14aef5">HandleExceptionWithBroker</a> (pid_t client_process_id, uid_t client_uid, const <a class="el" href="structcrashpad_1_1ExceptionHandlerProtocol_1_1ClientInformation.html">ExceptionHandlerProtocol::ClientInformation</a> &amp;info, int broker_sock, <a class="el" href="structcrashpad_1_1UUID.html">UUID</a> *local_report_id=nullptr) override</td></tr>
<tr class="memdesc:a91421eef2fd1ce673d5fed995a14aef5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on the receipt of a crash dump request from a client for a crash that should be mediated by a <a class="el" href="classcrashpad_1_1PtraceBroker.html" title="Implements a PtraceConnection over a socket.">PtraceBroker</a>. <a href="classcrashpad_1_1CrosCrashReportExceptionHandler.html#a91421eef2fd1ce673d5fed995a14aef5">More...</a><br /></td></tr>
<tr class="separator:a91421eef2fd1ce673d5fed995a14aef5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17b73464fadbfcafae4b383b11792f2f"><td class="memItemLeft" align="right" valign="top"><a id="a17b73464fadbfcafae4b383b11792f2f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetDumpDir</b> (const base::FilePath &amp;dump_dir)</td></tr>
<tr class="separator:a17b73464fadbfcafae4b383b11792f2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85fd782d76c4fa83cc2ae1bc000bd872"><td class="memItemLeft" align="right" valign="top"><a id="a85fd782d76c4fa83cc2ae1bc000bd872"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetAlwaysAllowFeedback</b> ()</td></tr>
<tr class="separator:a85fd782d76c4fa83cc2ae1bc000bd872"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classcrashpad_1_1ExceptionHandlerServer_1_1Delegate"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classcrashpad_1_1ExceptionHandlerServer_1_1Delegate')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classcrashpad_1_1ExceptionHandlerServer_1_1Delegate.html">crashpad::ExceptionHandlerServer::Delegate</a></td></tr>
<tr class="memitem:aeab0d0a0e52dc9ec0be773ce7f08c73a inherit pub_methods_classcrashpad_1_1ExceptionHandlerServer_1_1Delegate"><td class="memItemLeft" align="right" valign="top"><a id="aeab0d0a0e52dc9ec0be773ce7f08c73a"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ExceptionHandlerServer_1_1Delegate.html#aeab0d0a0e52dc9ec0be773ce7f08c73a">ExceptionHandlerServerStarted</a> ()=0</td></tr>
<tr class="memdesc:aeab0d0a0e52dc9ec0be773ce7f08c73a inherit pub_methods_classcrashpad_1_1ExceptionHandlerServer_1_1Delegate"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called when the server has created the named pipe connection points and is ready to service requests. <br /></td></tr>
<tr class="separator:aeab0d0a0e52dc9ec0be773ce7f08c73a inherit pub_methods_classcrashpad_1_1ExceptionHandlerServer_1_1Delegate"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa882e662bcede440ba8078edf4cbd14f inherit pub_methods_classcrashpad_1_1ExceptionHandlerServer_1_1Delegate"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1ExceptionHandlerServer_1_1Delegate.html#aa882e662bcede440ba8078edf4cbd14f">ExceptionHandlerServerException</a> (HANDLE process, <a class="el" href="namespacecrashpad.html#a368af6d88f68998b5c5eb80b8f6ebb76">WinVMAddress</a> exception_information_address, <a class="el" href="namespacecrashpad.html#a368af6d88f68998b5c5eb80b8f6ebb76">WinVMAddress</a> debug_critical_section_address)=0</td></tr>
<tr class="memdesc:aa882e662bcede440ba8078edf4cbd14f inherit pub_methods_classcrashpad_1_1ExceptionHandlerServer_1_1Delegate"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called when the client has signalled that it has encountered an exception and so wants a crash dump to be taken. <a href="classcrashpad_1_1ExceptionHandlerServer_1_1Delegate.html#aa882e662bcede440ba8078edf4cbd14f">More...</a><br /></td></tr>
<tr class="separator:aa882e662bcede440ba8078edf4cbd14f inherit pub_methods_classcrashpad_1_1ExceptionHandlerServer_1_1Delegate"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>An exception handler that writes crash reports to the ChromeOS crash_reporter. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="abcdd3304c4f1f928f45a3710523a340c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcdd3304c4f1f928f45a3710523a340c">&#9670;&nbsp;</a></span>CrosCrashReportExceptionHandler()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">crashpad::CrosCrashReportExceptionHandler::CrosCrashReportExceptionHandler </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classcrashpad_1_1CrashReportDatabase.html">CrashReportDatabase</a> *&#160;</td>
<td class="paramname"><em>database</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::map&lt; std::string, std::string &gt; *&#160;</td>
<td class="paramname"><em>process_annotations</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const UserStreamDataSources *&#160;</td>
<td class="paramname"><em>user_stream_data_sources</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a new object that will pass reports to <code>/sbin/crash_reporter</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">database</td><td>The database that supplies settings for this client. This object does not write its reports to this database. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">process_annotations</td><td>A map of annotations to insert as process-level annotations into each crash report that is written. Do not confuse this with module-level annotations, which are under the control of the crashing process, and are used to implement Chrome’s “crash keys.” Process-level annotations are those that are beyond the control of the crashing process, which must reliably be set even if the process crashes before it’s able to establish its own annotations. To interoperate with Breakpad servers, the recommended practice is to specify values for the <code>"prod"</code> and <code>"ver"</code> keys as process annotations. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">user_stream_data_sources</td><td>Data sources to be used to extend crash reports. For each crash report that is written, the data sources are called in turn. These data sources may contribute additional minidump streams. <code>nullptr</code> if not required. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa4eda1783adb5209e229a5d2e5a6fc9e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4eda1783adb5209e229a5d2e5a6fc9e">&#9670;&nbsp;</a></span>HandleException()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrosCrashReportExceptionHandler::HandleException </td>
<td>(</td>
<td class="paramtype">pid_t&#160;</td>
<td class="paramname"><em>client_process_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uid_t&#160;</td>
<td class="paramname"><em>client_uid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structcrashpad_1_1ExceptionHandlerProtocol_1_1ClientInformation.html">ExceptionHandlerProtocol::ClientInformation</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacecrashpad.html#af2d003bfc8632755c60ab27bd6d1c8ae">VMAddress</a>&#160;</td>
<td class="paramname"><em>requesting_thread_stack_address</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">pid_t *&#160;</td>
<td class="paramname"><em>requesting_thread_id</em> = <code>nullptr</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structcrashpad_1_1UUID.html">UUID</a> *&#160;</td>
<td class="paramname"><em>local_report_id</em> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on receipt of a crash dump request from a client. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">client_process_id</td><td>The process ID of the crashing client. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">client_uid</td><td>The user ID of the crashing client. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">info</td><td>Information on the client. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">requesting_thread_stack_address</td><td>Any address within the stack range for the the thread that sent the crash dump request. Optional. If unspecified or 0, <em>requesting_thread_id</em> will be -1. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">requesting_thread_id</td><td>The thread ID of the thread which requested the crash dump if not <code>nullptr</code>. Set to -1 if the thread ID could not be determined. Optional. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">local_report_id</td><td>The unique identifier for the report created in the local report database. Optional. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success. <code>false</code> on failure with a message logged. </dd></dl>
<p>Implements <a class="el" href="classcrashpad_1_1ExceptionHandlerServer_1_1Delegate.html#aebc8d4d844a27c1f28cdae64eea3a6f6">crashpad::ExceptionHandlerServer::Delegate</a>.</p>
</div>
</div>
<a id="a91421eef2fd1ce673d5fed995a14aef5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91421eef2fd1ce673d5fed995a14aef5">&#9670;&nbsp;</a></span>HandleExceptionWithBroker()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool crashpad::CrosCrashReportExceptionHandler::HandleExceptionWithBroker </td>
<td>(</td>
<td class="paramtype">pid_t&#160;</td>
<td class="paramname"><em>client_process_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uid_t&#160;</td>
<td class="paramname"><em>client_uid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structcrashpad_1_1ExceptionHandlerProtocol_1_1ClientInformation.html">ExceptionHandlerProtocol::ClientInformation</a> &amp;&#160;</td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>broker_sock</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structcrashpad_1_1UUID.html">UUID</a> *&#160;</td>
<td class="paramname"><em>local_report_id</em> = <code>nullptr</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on the receipt of a crash dump request from a client for a crash that should be mediated by a <a class="el" href="classcrashpad_1_1PtraceBroker.html" title="Implements a PtraceConnection over a socket.">PtraceBroker</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">client_process_id</td><td>The process ID of the crashing client. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">client_uid</td><td>The uid of the crashing client. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">info</td><td>Information on the client. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">broker_sock</td><td>A socket connected to the <a class="el" href="classcrashpad_1_1PtraceBroker.html" title="Implements a PtraceConnection over a socket.">PtraceBroker</a>. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">local_report_id</td><td>The unique identifier for the report created in the local report database. Optional. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> on success. <code>false</code> on failure with a message logged. </dd></dl>
<p>Implements <a class="el" href="classcrashpad_1_1ExceptionHandlerServer_1_1Delegate.html#afd2cb53f2df3377d8ec66c9565cd9179">crashpad::ExceptionHandlerServer::Delegate</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>handler/linux/cros_crash_report_exception_handler.h</li>
<li>handler/linux/cros_crash_report_exception_handler.cc</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>