blob: 20ae73081e083875ef3d2243c33a5a2b73755ee5 [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.feedback
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div>
## **PROTOCOLS**
## ComponentDataRegister {#ComponentDataRegister}
*Defined in [fuchsia.feedback/data_register.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_register.fidl;l=18)*
<p>Registers data useful to attach in feedback reports (crash, user feedback or bug reports).</p>
<p>This can be used by components to augment the data attached to all feedback reports. By default
the Feedback service attaches data exposed to the platform. This protocol is useful for data
known by certain components in certain products, but that is not exposed to the platform.</p>
<p>The epitaph ZX_ERR_INVALID_ARGS indicates that the client is sending invalid requests. See
below for each request why they might be invalid.</p>
<p>The epitaph ZX_ERR_NO_RESOURCES indicates that the server can no longer store additional
component data and will not service new connections.</p>
### Upsert {#ComponentDataRegister.Upsert}
<p>Upserts, i.e. updates or inserts, extra component data to be included in feedback reports.</p>
<p>The namespace and each annotation key are used to decide whether to update or insert an
annotation. If an annotation is already present for a given key within the same namespace,
update the value, otherwise insert the annotation with that key under that namespace.</p>
<p>For instance, assuming these are the data already held by the server (from previous calls
to Upsert()):</p>
<pre><code>{
&quot;bar&quot;: { # namespace
&quot;channel&quot;: &quot;stable&quot;,
},
&quot;foo&quot;: { # namespace
&quot;version&quot;: &quot;0.2&quot;,
}
}
</code></pre>
<p>then:</p>
<pre><code>Upsert({
&quot;namespace&quot;: &quot;bar&quot;,
&quot;annotations&quot;: [
&quot;version&quot;: &quot;1.2.3.45&quot;,
&quot;channel&quot;: &quot;beta&quot;,
]
})
</code></pre>
<p>would result in the server now holding:</p>
<pre><code>{
&quot;bar&quot;: { # namespace
&quot;channel&quot;: &quot;beta&quot;, # updated
&quot;version&quot;: &quot;1.2.3.45&quot; # inserted
},
&quot;foo&quot;: { # namespace
&quot;version&quot;: &quot;0.2&quot;, # untouched
}
}
</code></pre>
<p>Note that the server will only hold at most MAX_NUM_ANNOTATIONS_PER_NAMESPACE distinct
annotation keys per namespace, picking up the latest values.</p>
#### Request {#ComponentDataRegister.Upsert_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>data</code></td>
<td>
<code><a class='link' href='#ComponentData'>ComponentData</a></code>
</td>
</tr>
</table>
#### Response {#ComponentDataRegister.Upsert_Response}
&lt;EMPTY&gt;
## CrashReporter {#CrashReporter}
*Defined in [fuchsia.feedback/crash_reporter.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=11)*
<p>Provides the ability to file crash reports.</p>
### File {#CrashReporter.File}
<p>Files a crash <code>report</code>.</p>
<p>This could mean generating a crash report in a local crash report database or uploading the
crash report to a remote crash server depending on the FIDL server's configuration.</p>
#### Request {#CrashReporter.File_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>report</code></td>
<td>
<code><a class='link' href='#CrashReport'>CrashReport</a></code>
</td>
</tr>
</table>
#### Response {#CrashReporter.File_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#CrashReporter_File_Result'>CrashReporter_File_Result</a></code>
</td>
</tr>
</table>
## CrashReportingProductRegister {#CrashReportingProductRegister}
*Defined in [fuchsia.feedback/crash_register.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_register.fidl;l=13)*
<p>Allows a component to choose a different crash reporting product to file crashes for that
component under.</p>
<p>By default, all crashes detected by the platform are filed under a single product on the crash
server. This API allows components to choose their own product while still benefiting from the
platform's exception handling and crash reporting.</p>
### Upsert {#CrashReportingProductRegister.Upsert}
<p>Upserts, i.e. updates or inserts, a crash reporting product for a given component URL.</p>
<p>A subsequent call to Upsert() for the same component URL overwrites the
<code>CrashReportingProduct</code> for that component.</p>
<p>Prefer UpsertWithAck() if the component also files crash reports itself, to avoid race
conditions and mis-attribution.</p>
#### Request {#CrashReportingProductRegister.Upsert_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>component_url</code></td>
<td>
<code>string[2083]</code>
</td>
</tr>
<tr>
<td><code>product</code></td>
<td>
<code><a class='link' href='#CrashReportingProduct'>CrashReportingProduct</a></code>
</td>
</tr>
</table>
### UpsertWithAck {#CrashReportingProductRegister.UpsertWithAck}
<p>Upserts (see above) and notifies the client when the operation is complete.</p>
<p>This allows clients to prevent races between filing crash reports and calls to Upsert.
Otherwise if a crash report is filed before the upsert completes, the crash report will be
attributed to the wrong product, leading to potentially incorrect crash data.</p>
#### Request {#CrashReportingProductRegister.UpsertWithAck_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>component_url</code></td>
<td>
<code>string[2083]</code>
</td>
</tr>
<tr>
<td><code>product</code></td>
<td>
<code><a class='link' href='#CrashReportingProduct'>CrashReportingProduct</a></code>
</td>
</tr>
</table>
#### Response {#CrashReportingProductRegister.UpsertWithAck_Response}
&lt;EMPTY&gt;
## DataProvider {#DataProvider}
*Defined in [fuchsia.feedback/data_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_provider.fidl;l=13)*
<p>Provides data useful to attach to feedback reports, e.g., a crash report filed by the system, a
user feedback report filed by a user or a bug report filed by a developer.</p>
### GetAnnotations {#DataProvider.GetAnnotations}
<p>Returns a set of annotations about the device's state.</p>
<p><code>annotations</code> may be empty if there was an issue collecting them.</p>
<p>These are the same annotations as provided through GetSnapshot() - some clients only want
the annotations while others want both the annotations and the snapshot and generating the
snapshot can take significantly more time than collecting the annotations, e.g., logs are
only part of the snapshot and not part of the annotations and can take some time.</p>
#### Request {#DataProvider.GetAnnotations_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>params</code></td>
<td>
<code><a class='link' href='#GetAnnotationsParameters'>GetAnnotationsParameters</a></code>
</td>
</tr>
</table>
#### Response {#DataProvider.GetAnnotations_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>annotations</code></td>
<td>
<code><a class='link' href='#Annotations'>Annotations</a></code>
</td>
</tr>
</table>
### GetScreenshot {#DataProvider.GetScreenshot}
<p>Returns an image of the current view encoded in the provided <code>encoding</code>.</p>
<p><code>screenshot</code> may be null if the encoding is not supported, the device does not have a
display, or there is not enough memory to allocate the screenshot image.</p>
<p>The screenshot is provided separately from the snapshot as callers might want to block on
this call before changing the view while collecting a snapshot in the background is fine.
There are also a lot of clients that are not interested in the screenshot.</p>
#### Request {#DataProvider.GetScreenshot_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>encoding</code></td>
<td>
<code><a class='link' href='#ImageEncoding'>ImageEncoding</a></code>
</td>
</tr>
</table>
#### Response {#DataProvider.GetScreenshot_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>screenshot</code></td>
<td>
<code><a class='link' href='#Screenshot'>Screenshot</a>?</code>
</td>
</tr>
</table>
### GetSnapshot {#DataProvider.GetSnapshot}
<p>Returns a snapshot of the device's state.</p>
<p><code>snapshot</code> may be empty if there was an issue generating the snapshot.</p>
#### Request {#DataProvider.GetSnapshot_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>params</code></td>
<td>
<code><a class='link' href='#GetSnapshotParameters'>GetSnapshotParameters</a></code>
</td>
</tr>
</table>
#### Response {#DataProvider.GetSnapshot_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>snapshot</code></td>
<td>
<code><a class='link' href='#Snapshot'>Snapshot</a></code>
</td>
</tr>
</table>
## DataProviderController {#DataProviderController}
*Defined in [fuchsia.feedback/data_provider_controller.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_provider_controller.fidl;l=9)*
<p>Used to externally control the data provider, say when disk space is becoming scarce or user
privacy settings change.</p>
### DisableAndDropPersistentLogs {#DataProviderController.DisableAndDropPersistentLogs}
<p>Disables persistent logging for the remainder of the boot and drops any logs that have been
persisted. Returns when both have completed. Persistent logging cannot
be re-enabled at the moment due to the fact that a device is expected to reboot soon after
persistent logging has been disabled.</p>
<p>Be aware that any snapshots created during the next boot will not have logs from the
current boot and can make debugging difficult.</p>
#### Request {#DataProviderController.DisableAndDropPersistentLogs_Request}
&lt;EMPTY&gt;
#### Response {#DataProviderController.DisableAndDropPersistentLogs_Response}
&lt;EMPTY&gt;
## DeviceIdProvider {#DeviceIdProvider}
*Defined in [fuchsia.feedback/device_id_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/device_id_provider.fidl;l=12)*
<p>Provides the device's feedback ID.</p>
<p>The feedback ID is a persisted UUID used to group feedback reports. The ID
is not intended to be used for any reporting purposes other than feedback,
e.g., not intended to be used for telemetry.</p>
### GetId {#DeviceIdProvider.GetId}
<p>Returns the device's feedback ID.</p>
<p>This method follows the hanging-get pattern and won't return a value until the ID since the
last call has changed.</p>
#### Request {#DeviceIdProvider.GetId_Request}
&lt;EMPTY&gt;
#### Response {#DeviceIdProvider.GetId_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>feedback_id</code></td>
<td>
<code>string[64]</code>
</td>
</tr>
</table>
## LastRebootInfoProvider {#LastRebootInfoProvider}
*Defined in [fuchsia.feedback/last_reboot_info.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/last_reboot_info.fidl;l=11)*
<p>Get information about why a device last shutdown. The term reboot is used instead of shutdown
since many developers phrase their questions about shutdowns in terms of reboots and most
components are interested in knowing why the system just rebooted.</p>
### Get {#LastRebootInfoProvider.Get}
#### Request {#LastRebootInfoProvider.Get_Request}
&lt;EMPTY&gt;
#### Response {#LastRebootInfoProvider.Get_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>last_reboot</code></td>
<td>
<code><a class='link' href='#LastReboot'>LastReboot</a></code>
</td>
</tr>
</table>
## **STRUCTS**
### Annotation {#Annotation data-text="Annotation"}
*Defined in [fuchsia.feedback/annotation.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/annotation.fidl;l=8)*
<p>An annotation and its plain ASCII string key.
Annotations are short strings, e.g., the board name or the build version.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Annotation.key">
<td><code>key</code></td>
<td>
<code>string[128]</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Annotation.value">
<td><code>value</code></td>
<td>
<code>string[1024]</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Attachment [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#Attachment data-text="Attachment"}
*Defined in [fuchsia.feedback/attachment.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/attachment.fidl;l=10)*
<p>An attachment and its plain ASCII string key.
Attachments are larger objects, e.g., log files. They may be binary or text data.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Attachment.key">
<td><code>key</code></td>
<td>
<code>string[128]</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Attachment.value">
<td><code>value</code></td>
<td>
<code><a class='link' href='../fuchsia.mem/'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/#Buffer'>Buffer</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### CrashReporter_File_Response {#CrashReporter_File_Response data-text="CrashReporter_File_Response"}
*Defined in [fuchsia.feedback/crash_reporter.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=18)*
&lt;EMPTY&gt;
### Screenshot [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#Screenshot data-text="Screenshot"}
*Defined in [fuchsia.feedback/data_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_provider.fidl;l=124)*
<p>An encoded image of the screen.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Screenshot.image">
<td><code>image</code></td>
<td>
<code><a class='link' href='../fuchsia.mem/'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/#Buffer'>Buffer</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Screenshot.dimensions_in_px">
<td><code>dimensions_in_px</code></td>
<td>
<code><a class='link' href='../fuchsia.math/'>fuchsia.math</a>/<a class='link' href='../fuchsia.math/#Size'>Size</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
## **ENUMS**
### ImageEncoding [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ImageEncoding data-text="ImageEncoding"}
Type: <code>uint32</code>
*Defined in [fuchsia.feedback/data_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_provider.fidl;l=119)*
<p>The encoding used for the image.</p>
<p>Today, only PNG is supported, but in the future the screenshot could be
returned in other encodings if need arises.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ImageEncoding.PNG">
<td><h3 id="ImageEncoding.PNG" class="add-link hide-from-toc">PNG</h3></td>
<td><code>0</code></td>
<td></td>
</tr>
</table>
### RebootReason [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#RebootReason data-text="RebootReason"}
Type: <code>uint16</code>
*Defined in [fuchsia.feedback/last_reboot_info.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/last_reboot_info.fidl;l=108)*
<p>Reasons why a device last rebooted.</p>
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="RebootReason.UNKNOWN">
<td><h3 id="RebootReason.UNKNOWN" class="add-link hide-from-toc">UNKNOWN</h3></td>
<td><code>0</code></td>
<td><p>The client will get this value if the server is sending a new enum value that the client
was not compiled with.</p>
</td>
</tr>
<tr id="RebootReason.COLD">
<td><h3 id="RebootReason.COLD" class="add-link hide-from-toc">COLD</h3></td>
<td><code>2</code></td>
<td><p>The device booted from a cold state.</p>
<p>This is most likely the result of an extended period of time without power or a device
booting with Fuchsia for the first time.</p>
</td>
</tr>
<tr id="RebootReason.BRIEF_POWER_LOSS">
<td><h3 id="RebootReason.BRIEF_POWER_LOSS" class="add-link hide-from-toc">BRIEF_POWER_LOSS</h3></td>
<td><code>3</code></td>
<td><p>The device rebooted due to a brief loss of power.</p>
<p>On some hardware this could be the result of a user disconnecting, then reconnecting their
device's power supply in rapid succession.</p>
</td>
</tr>
<tr id="RebootReason.BROWNOUT">
<td><h3 id="RebootReason.BROWNOUT" class="add-link hide-from-toc">BROWNOUT</h3></td>
<td><code>4</code></td>
<td><p>The device rebooted because its voltage dipped below an allowable level without going to 0.</p>
</td>
</tr>
<tr id="RebootReason.KERNEL_PANIC">
<td><h3 id="RebootReason.KERNEL_PANIC" class="add-link hide-from-toc">KERNEL_PANIC</h3></td>
<td><code>5</code></td>
<td></td>
</tr>
<tr id="RebootReason.SYSTEM_OUT_OF_MEMORY">
<td><h3 id="RebootReason.SYSTEM_OUT_OF_MEMORY" class="add-link hide-from-toc">SYSTEM_OUT_OF_MEMORY</h3></td>
<td><code>6</code></td>
<td></td>
</tr>
<tr id="RebootReason.HARDWARE_WATCHDOG_TIMEOUT">
<td><h3 id="RebootReason.HARDWARE_WATCHDOG_TIMEOUT" class="add-link hide-from-toc">HARDWARE_WATCHDOG_TIMEOUT</h3></td>
<td><code>7</code></td>
<td></td>
</tr>
<tr id="RebootReason.SOFTWARE_WATCHDOG_TIMEOUT">
<td><h3 id="RebootReason.SOFTWARE_WATCHDOG_TIMEOUT" class="add-link hide-from-toc">SOFTWARE_WATCHDOG_TIMEOUT</h3></td>
<td><code>8</code></td>
<td></td>
</tr>
<tr id="RebootReason.ROOT_JOB_TERMINATION">
<td><h3 id="RebootReason.ROOT_JOB_TERMINATION" class="add-link hide-from-toc">ROOT_JOB_TERMINATION</h3></td>
<td><code>19</code></td>
<td><p>The device rebooted because the userspace root job was terminated, most likely because one
of its critical processes crashed.</p>
</td>
</tr>
<tr id="RebootReason.USER_REQUEST">
<td><h3 id="RebootReason.USER_REQUEST" class="add-link hide-from-toc">USER_REQUEST</h3></td>
<td><code>9</code></td>
<td><p>The device rebooted because a user of the device initiated the reboot. A user can be a
human or a program that interacts with the device on behalf of a human, such as SL4F or RCS.</p>
</td>
</tr>
<tr id="RebootReason.SYSTEM_UPDATE">
<td><h3 id="RebootReason.SYSTEM_UPDATE" class="add-link hide-from-toc">SYSTEM_UPDATE</h3></td>
<td><code>10</code></td>
<td><p>The device rebooted because of an OTA.</p>
</td>
</tr>
<tr id="RebootReason.RETRY_SYSTEM_UPDATE">
<td><h3 id="RebootReason.RETRY_SYSTEM_UPDATE" class="add-link hide-from-toc">RETRY_SYSTEM_UPDATE</h3></td>
<td><code>17</code></td>
<td><p>The device rebooted because applying the OTA failed and we want to retry.</p>
</td>
</tr>
<tr id="RebootReason.HIGH_TEMPERATURE">
<td><h3 id="RebootReason.HIGH_TEMPERATURE" class="add-link hide-from-toc">HIGH_TEMPERATURE</h3></td>
<td><code>11</code></td>
<td><p>The device rebooted because it was determined to be too hot.</p>
</td>
</tr>
<tr id="RebootReason.SESSION_FAILURE">
<td><h3 id="RebootReason.SESSION_FAILURE" class="add-link hide-from-toc">SESSION_FAILURE</h3></td>
<td><code>12</code></td>
<td><p>The device rebooted because of an issue with a session or because the session manager was
unable to recover from an error.</p>
</td>
</tr>
<tr id="RebootReason.SYSMGR_FAILURE">
<td><h3 id="RebootReason.SYSMGR_FAILURE" class="add-link hide-from-toc">SYSMGR_FAILURE</h3></td>
<td><code>15</code></td>
<td><p>The device rebooted because the system manager (sysmgr) was unable to recover from an
error.</p>
</td>
</tr>
<tr id="RebootReason.FACTORY_DATA_RESET">
<td><h3 id="RebootReason.FACTORY_DATA_RESET" class="add-link hide-from-toc">FACTORY_DATA_RESET</h3></td>
<td><code>14</code></td>
<td><p>The device rebooted following a data reset to factory defaults.
See <a class='link' href='#fuchsia.recovery.FactoryReset'>fuchsia.recovery.FactoryReset</a>.</p>
</td>
</tr>
<tr id="RebootReason.CRITICAL_COMPONENT_FAILURE">
<td><h3 id="RebootReason.CRITICAL_COMPONENT_FAILURE" class="add-link hide-from-toc">CRITICAL_COMPONENT_FAILURE</h3></td>
<td><code>16</code></td>
<td><p>The device rebooted because a critical component managed by sysmgr has failed.</p>
</td>
</tr>
<tr id="RebootReason.ZBI_SWAP">
<td><h3 id="RebootReason.ZBI_SWAP" class="add-link hide-from-toc">ZBI_SWAP</h3></td>
<td><code>18</code></td>
<td><p>The device rebooted to apply the swap of Zircon boot images.</p>
</td>
</tr>
</table>
## **TABLES**
### Annotations {#Annotations data-text="Annotations"}
*Defined in [fuchsia.feedback/data_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_provider.fidl;l=89)*
<p>Annotations about the device's state.</p>
<p>Clients typically upload the data straight to servers. So the data comes in the form of
arbitrary key-value pairs that clients can directly forward to the servers.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Annotations.annotations">
<td><h3 id="Annotations.annotations" class="add-link hide-from-toc">1</h3></td>
<td><code>annotations</code></td>
<td>
<code>vector&lt;<a class='link' href='#Annotation'>Annotation</a>&gt;[64]</code>
</td>
<td><p>A vector of key-value string pairs. Keys are guaranteed to be unique.</p>
</td>
</tr>
</table>
### ComponentData {#ComponentData data-text="ComponentData"}
*Defined in [fuchsia.feedback/data_register.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_register.fidl;l=71)*
<p>Data known to a component, but not exposed to the platform, to attach to feedback reports.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ComponentData.namespace">
<td><h3 id="ComponentData.namespace" class="add-link hide-from-toc">1</h3></td>
<td><code>namespace</code></td>
<td>
<code>string[32]</code>
</td>
<td><p>The top-level namespace associated with the data:</p>
<ul>
<li>Is intended to group related data together and reduce data key collisions across
namespaces.</li>
<li>May be shared by multiple clients, e.g., there could be multiple clients within the same
component or across components that want to expose related data and they would all use
the same namespace.</li>
<li>Will be prefixed to every data key passed within that namespace in all feedback reports,
e.g., the annotation &quot;version&quot; would appear as &quot;foo.version&quot; in all feedback reports if
the namespace is &quot;foo&quot;.</li>
<li>Must match [a-z-]+, i.e. only lowercase letters and hyphens or this will result in a
ZX_ERR_INVALID_ARGS epitaph.</li>
<li>Must not match a reserved namespace used internally for platform data, e.g., &quot;build&quot;, or
this will result in a ZX_ERR_INVALID_ARGS epitaph. The list of reserved namespaces is
internal and subject to change for now.</li>
</ul>
</td>
</tr>
<tr id="ComponentData.annotations">
<td><h3 id="ComponentData.annotations" class="add-link hide-from-toc">2</h3></td>
<td><code>annotations</code></td>
<td>
<code>vector&lt;<a class='link' href='#Annotation'>Annotation</a>&gt;[16]</code>
</td>
<td><p>A vector of key-value string pairs, e.g., <code>&lt;&quot;version&quot;, &quot;1.2.3.45&quot;&gt;</code>.</p>
<p>Keys:</p>
<ul>
<li>Should be unique as only the latest value for a given key in the vector will be
considered.</li>
<li>Must match [a-z-.]+, i.e. only lowercase letters, hyphens and periods. Use periods for
sub-namespacing, e.g., &quot;build.label&quot; and &quot;build.type&quot;, so that related annotations are
grouped together (here related to &quot;build&quot;) when sorted lexicographically.</li>
</ul>
</td>
</tr>
</table>
### CrashReport [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#CrashReport data-text="CrashReport"}
*Defined in [fuchsia.feedback/crash_reporter.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=28)*
<p>Represents a crash report.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="CrashReport.program_name">
<td><h3 id="CrashReport.program_name" class="add-link hide-from-toc">1</h3></td>
<td><code>program_name</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The name of the program that crashed, e.g., the process or component's name.</p>
</td>
</tr>
<tr id="CrashReport.program_uptime">
<td><h3 id="CrashReport.program_uptime" class="add-link hide-from-toc">6</h3></td>
<td><code>program_uptime</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#duration'>duration</a></code>
</td>
<td><p>How long the program was running before it crashed.</p>
</td>
</tr>
<tr id="CrashReport.specific_report">
<td><h3 id="CrashReport.specific_report" class="add-link hide-from-toc">2</h3></td>
<td><code>specific_report</code></td>
<td>
<code><a class='link' href='#SpecificCrashReport'>SpecificCrashReport</a></code>
</td>
<td><p>The specific report that depends on the type of crashes.</p>
<p>This field should be set if additional information about the crashing program needs to be
sent, e.g., a minidump.</p>
</td>
</tr>
<tr id="CrashReport.annotations">
<td><h3 id="CrashReport.annotations" class="add-link hide-from-toc">3</h3></td>
<td><code>annotations</code></td>
<td>
<code>vector&lt;<a class='link' href='#Annotation'>Annotation</a>&gt;[32]</code>
</td>
<td><p>A vector of key-value string pairs representing arbitrary data that should be attached to a
crash report.</p>
<p>Keys should be unique as only the latest value for a given key in the vector will be
considered.</p>
</td>
</tr>
<tr id="CrashReport.attachments">
<td><h3 id="CrashReport.attachments" class="add-link hide-from-toc">4</h3></td>
<td><code>attachments</code></td>
<td>
<code>vector&lt;<a class='link' href='#Attachment'>Attachment</a>&gt;[16]</code>
</td>
<td><p>A vector of key-value string-to-VMO pairs representing arbitrary data that should be
attached to a crash report.</p>
<p>Keys should be unique as only the latest value for a given key in the vector will be
considered.</p>
</td>
</tr>
<tr id="CrashReport.event_id">
<td><h3 id="CrashReport.event_id" class="add-link hide-from-toc">5</h3></td>
<td><code>event_id</code></td>
<td>
<code>string[128]</code>
</td>
<td><p>A text ID that the crash server can use to group multiple crash reports related to the
same event.</p>
<p>Unlike the crash signature, crash reports sharing the same ID correspond to different
crashes, but can be considered as belonging to the same event, e.g., a crash in a low-level
server causing a crash in a high-level UI widget.</p>
</td>
</tr>
<tr id="CrashReport.crash_signature">
<td><h3 id="CrashReport.crash_signature" class="add-link hide-from-toc">7</h3></td>
<td><code>crash_signature</code></td>
<td>
<code>string[128]</code>
</td>
<td><p>A text signature that the crash server can use to track the same crash over time, e.g.,
&quot;kernel-panic&quot; or &quot;oom&quot;. This signature will take precedence over any automated signature
derived from the rest of the data.</p>
<p>Unlike the event ID, crash reports sharing the same signature correspond to the same crash,
but happening over multiple events, e.g., a null pointer exception in a server whenever
asked the same request.</p>
<p>Must match [a-z][a-z-]* i.e. only lowercase letters and hyphens or this will result in a
ZX_ERR_INVALID_ARGS epitaph.</p>
</td>
</tr>
<tr id="CrashReport.is_fatal">
<td><h3 id="CrashReport.is_fatal" class="add-link hide-from-toc">8</h3></td>
<td><code>is_fatal</code></td>
<td>
<code>bool</code>
</td>
<td><p>Indicates whether the crash report is for the atypical stop of a running process, component,
or the system itself.</p>
<p>Examples of events that result in fatal crash reports are:</p>
<ul>
<li>an ELF process crashing</li>
<li>the system rebooting because it ran out of memory.</li>
<li>the system rebooting because a critical component crashed.</li>
<li>the system rebooting because the device was too hot.</li>
</ul>
<p>Examples of events that result in non-fatal crash reports are:</p>
<ul>
<li>an uncaught exception in a Dart program with many execution contexts. The runtime may
chose to terminate that specific execution context and file a crash report for it instead
of the whole program.</li>
<li>a component detecting a fatal event (like an OOM) may occur soon, but isn't guaranteed to
occur.</li>
</ul>
<p>This field is primarily used for grouping crashes by fatal, not fatal, and unknown,
each corresponding to the field being set to true, set to false, or not set respectively.</p>
</td>
</tr>
</table>
### CrashReportingProduct {#CrashReportingProduct data-text="CrashReportingProduct"}
*Defined in [fuchsia.feedback/crash_register.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_register.fidl;l=41)*
<p>Product information to report to the crash server.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="CrashReportingProduct.name">
<td><h3 id="CrashReportingProduct.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code>string</code>
</td>
<td><p>The product name on the crash server.</p>
<ul>
<li>The first character has to be alphanumeric. The remaining characters must be printable,
but cannot be a space, which leaves values 33 to 127 in the ASCII table. Any other
characters will result in a ZX_ERR_INVALID_ARGS epitaph.</li>
<li>Missing this required field will result in a ZX_ERR_INVALID_ARGS epitaph.</li>
</ul>
</td>
</tr>
<tr id="CrashReportingProduct.version">
<td><h3 id="CrashReportingProduct.version" class="add-link hide-from-toc">2</h3></td>
<td><code>version</code></td>
<td>
<code>string</code>
</td>
<td><p>Optional product version of the component.</p>
<ul>
<li>The first character has to be alphanumeric. The remaining characters must be printable,
but cannot be a space, which leaves values 33 to 127 in the ASCII table. Any other
characters will result in a ZX_ERR_INVALID_ARGS epitaph.</li>
</ul>
<p>If no version is specified then none is reported to the crash server.</p>
</td>
</tr>
<tr id="CrashReportingProduct.channel">
<td><h3 id="CrashReportingProduct.channel" class="add-link hide-from-toc">3</h3></td>
<td><code>channel</code></td>
<td>
<code>string</code>
</td>
<td><p>Optional product release channel for the component, e.g., &quot;canary&quot;, &quot;beta&quot;, &quot;stable&quot;.</p>
<p>If no channel is specified then none is reported to the crash server.</p>
</td>
</tr>
</table>
### GetAnnotationsParameters {#GetAnnotationsParameters data-text="GetAnnotationsParameters"}
*Defined in [fuchsia.feedback/data_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_provider.fidl;l=55)*
<p>Parameters for the DataProvider::GetAnnotations() method.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="GetAnnotationsParameters.collection_timeout_per_annotation">
<td><h3 id="GetAnnotationsParameters.collection_timeout_per_annotation" class="add-link hide-from-toc">1</h3></td>
<td><code>collection_timeout_per_annotation</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#duration'>duration</a></code>
</td>
<td><p>Annotations are collected in parallel from various places in the platform, each with a
timeout.</p>
<p><code>collection_timeout_per_annotation</code> allows clients to control how much time is given to
each annotation collection. It enables clients to get a partial set of annotations under a
certain time.</p>
</td>
</tr>
</table>
### GetSnapshotParameters [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#GetSnapshotParameters data-text="GetSnapshotParameters"}
*Defined in [fuchsia.feedback/data_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_provider.fidl;l=66)*
<p>Parameters for the DataProvider::GetSnapshot() method.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="GetSnapshotParameters.collection_timeout_per_data">
<td><h3 id="GetSnapshotParameters.collection_timeout_per_data" class="add-link hide-from-toc">1</h3></td>
<td><code>collection_timeout_per_data</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#duration'>duration</a></code>
</td>
<td><p>A snapshot aggregates various data from the platform (device uptime, logs, Inspect data,
etc.) that are collected in parallel. Internally, each data collection is done within a
timeout.</p>
<p><code>collection_timeout_per_data</code> allows clients to control how much time is given to each data
collection. It enables clients to get a partial yet valid snapshot under a certain time.</p>
<p>Note that this does not control how much total time the snapshot generation may take,
which is by construction higher than <code>collection_timeout_per_data</code>, as clients can control
the total time by using a timeout on the call to GetSnapshot() on their side.</p>
</td>
</tr>
<tr id="GetSnapshotParameters.response_channel">
<td><h3 id="GetSnapshotParameters.response_channel" class="add-link hide-from-toc">2</h3></td>
<td><code>response_channel</code></td>
<td>
<code>handle&lt;channel&gt;</code>
</td>
<td><p>If set, the snapshot archive will be sent as a |fuchsia.io.File| over this channel instead
of being set in the |archive| field in the |Snapshot| response. This is typically useful if
the client is on the host and does not support VMOs.</p>
</td>
</tr>
</table>
### LastReboot {#LastReboot data-text="LastReboot"}
*Defined in [fuchsia.feedback/last_reboot_info.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/last_reboot_info.fidl;l=18)*
<p>Information about why a device last rebooted.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="LastReboot.graceful">
<td><h3 id="LastReboot.graceful" class="add-link hide-from-toc">1</h3></td>
<td><code>graceful</code></td>
<td>
<code>bool</code>
</td>
<td><p>Whether the last reboot was graceful, i.e. the device didn't reboot in response to an error
and rebooted in a controlled manner.</p>
<p>This field allows clients to know whether the last reboot was graceful without having to
parse the optional |reason| field. This is useful when |reason| is not set, i.e. because
the system doesn't know more than the fact that the reboot was graceful, or when the API
evolves to support new RebootReason values and the clients hasn't been updated yet.</p>
<p>This field is always has a value if |reason| is provided. However, |reason| might not
always have a value this field is provided.</p>
</td>
</tr>
<tr id="LastReboot.reason">
<td><h3 id="LastReboot.reason" class="add-link hide-from-toc">2</h3></td>
<td><code>reason</code></td>
<td>
<code><a class='link' href='#RebootReason'>RebootReason</a></code>
</td>
<td><p>Why a device last rebooted.</p>
</td>
</tr>
<tr id="LastReboot.uptime">
<td><h3 id="LastReboot.uptime" class="add-link hide-from-toc">3</h3></td>
<td><code>uptime</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#duration'>duration</a></code>
</td>
<td><p>The uptime of the device before it rebooted.</p>
</td>
</tr>
</table>
### NativeCrashReport [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#NativeCrashReport data-text="NativeCrashReport"}
*Defined in [fuchsia.feedback/crash_reporter.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=114)*
<p>Represents a crash report for a native exception out of which the client has built a minidump.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="NativeCrashReport.minidump">
<td><h3 id="NativeCrashReport.minidump" class="add-link hide-from-toc">1</h3></td>
<td><code>minidump</code></td>
<td>
<code><a class='link' href='../fuchsia.mem/'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/#Buffer'>Buffer</a></code>
</td>
<td><p>The core dump in the Minidump format.</p>
</td>
</tr>
<tr id="NativeCrashReport.process_name">
<td><h3 id="NativeCrashReport.process_name" class="add-link hide-from-toc">2</h3></td>
<td><code>process_name</code></td>
<td>
<code>string[64]</code>
</td>
<td><p>The name of the crashed process.</p>
</td>
</tr>
<tr id="NativeCrashReport.process_koid">
<td><h3 id="NativeCrashReport.process_koid" class="add-link hide-from-toc">3</h3></td>
<td><code>process_koid</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#koid'>koid</a></code>
</td>
<td><p>The kernel object id of the crashed process.</p>
</td>
</tr>
<tr id="NativeCrashReport.thread_name">
<td><h3 id="NativeCrashReport.thread_name" class="add-link hide-from-toc">4</h3></td>
<td><code>thread_name</code></td>
<td>
<code>string[64]</code>
</td>
<td><p>The name of the crashed thread.</p>
</td>
</tr>
<tr id="NativeCrashReport.thread_koid">
<td><h3 id="NativeCrashReport.thread_koid" class="add-link hide-from-toc">5</h3></td>
<td><code>thread_koid</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#koid'>koid</a></code>
</td>
<td><p>The kernel object id of the crashed thread.</p>
</td>
</tr>
</table>
### RuntimeCrashReport [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#RuntimeCrashReport data-text="RuntimeCrashReport"}
*Defined in [fuchsia.feedback/crash_reporter.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=135)*
<p>Represents a crash report for a runtime exception, applicable to most languages.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="RuntimeCrashReport.exception_type">
<td><h3 id="RuntimeCrashReport.exception_type" class="add-link hide-from-toc">1</h3></td>
<td><code>exception_type</code></td>
<td>
<code>string[128]</code>
</td>
<td><p>The exception type, e.g., &quot;FileSystemException&quot;.</p>
</td>
</tr>
<tr id="RuntimeCrashReport.exception_message">
<td><h3 id="RuntimeCrashReport.exception_message" class="add-link hide-from-toc">2</h3></td>
<td><code>exception_message</code></td>
<td>
<code>string[2048]</code>
</td>
<td><p>The exception message, e.g., &quot;cannot open file&quot;.</p>
</td>
</tr>
<tr id="RuntimeCrashReport.exception_stack_trace">
<td><h3 id="RuntimeCrashReport.exception_stack_trace" class="add-link hide-from-toc">3</h3></td>
<td><code>exception_stack_trace</code></td>
<td>
<code><a class='link' href='../fuchsia.mem/'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/#Buffer'>Buffer</a></code>
</td>
<td><p>The text representation of the exception stack trace.</p>
</td>
</tr>
</table>
### Snapshot [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#Snapshot data-text="Snapshot"}
*Defined in [fuchsia.feedback/data_provider.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_provider.fidl;l=98)*
<p>Snapshot about the device's state.</p>
<p>Clients typically upload the data straight to servers. So the data comes in the form of
arbitrary key-value pairs that clients can directly forward to the servers.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Snapshot.archive">
<td><h3 id="Snapshot.archive" class="add-link hide-from-toc">1</h3></td>
<td><code>archive</code></td>
<td>
<code><a class='link' href='#Attachment'>Attachment</a></code>
</td>
<td><p>A &lt;filename, ZIP archive&gt; pair.</p>
<p>The ZIP archive contains several files corresponding to the various data it collected from
the platform. There is typically one file for all the annotations (device uptime, build
version, etc.) and one file per attachment (logs, Inspect data, etc.).</p>
<p>Not set if |response_channel| was set in the request.</p>
</td>
</tr>
<tr id="Snapshot.annotations">
<td><h3 id="Snapshot.annotations" class="add-link hide-from-toc">2</h3></td>
<td><code>annotations</code></td>
<td>
<code>vector&lt;<a class='link' href='#Annotation'>Annotation</a>&gt;[64]</code>
</td>
<td><p>A vector of key-value string pairs. Keys are guaranteed to be unique.</p>
<p>While the annotations are included in the ZIP archive itself, some clients also want them
separately to index or augment them so we provide them separately as well.</p>
</td>
</tr>
</table>
## **UNIONS**
### CrashReporter_File_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#CrashReporter_File_Result data-text="CrashReporter_File_Result"}
*Defined in [fuchsia.feedback/crash_reporter.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=18)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="CrashReporter_File_Result.response">
<td><h3 id="CrashReporter_File_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#CrashReporter_File_Response'>CrashReporter_File_Response</a></code>
</td>
<td></td>
</tr>
<tr id="CrashReporter_File_Result.err">
<td><h3 id="CrashReporter_File_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
</td>
<td></td>
</tr>
</table>
### SpecificCrashReport [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#SpecificCrashReport data-text="SpecificCrashReport"}
*Defined in [fuchsia.feedback/crash_reporter.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=100)*
<p>Represents a specific crash report.</p>
<p>Add a new member when the server needs to special case how it handles certain annotations and
attachments for a given type of crashes, e.g., a <code>RuntimeCrashReport</code> for Javascript.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="SpecificCrashReport.">
<td><h3 id="SpecificCrashReport." class="add-link hide-from-toc">1</h3></td>
<td><code></code></td>
<td>
<code></code>
</td>
<td></td>
</tr>
<tr id="SpecificCrashReport.native">
<td><h3 id="SpecificCrashReport.native" class="add-link hide-from-toc">2</h3></td>
<td><code>native</code></td>
<td>
<code><a class='link' href='#NativeCrashReport'>NativeCrashReport</a></code>
</td>
<td><p>Intended for a native exception.</p>
</td>
</tr>
<tr id="SpecificCrashReport.dart">
<td><h3 id="SpecificCrashReport.dart" class="add-link hide-from-toc">3</h3></td>
<td><code>dart</code></td>
<td>
<code><a class='link' href='#RuntimeCrashReport'>RuntimeCrashReport</a></code>
</td>
<td><p>Intended for a Dart exception.</p>
</td>
</tr>
</table>
## **CONSTANTS**
<table>
<tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr>
<tr id="MAX_CRASH_SIGNATURE_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=25">MAX_CRASH_SIGNATURE_LENGTH</a></td>
<td>
<code>128</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_EVENT_ID_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=24">MAX_EVENT_ID_LENGTH</a></td>
<td>
<code>128</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_EXCEPTION_MESSAGE_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=132">MAX_EXCEPTION_MESSAGE_LENGTH</a></td>
<td>
<code>2048</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_EXCEPTION_TYPE_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=131">MAX_EXCEPTION_TYPE_LENGTH</a></td>
<td>
<code>128</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_NAMESPACE_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_register.fidl;l=67">MAX_NAMESPACE_LENGTH</a></td>
<td>
<code>32</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_NUM_ANNOTATIONS_PER_CRASH_REPORT">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=22">MAX_NUM_ANNOTATIONS_PER_CRASH_REPORT</a></td>
<td>
<code>32</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_NUM_ANNOTATIONS_PER_NAMESPACE">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_register.fidl;l=68">MAX_NUM_ANNOTATIONS_PER_NAMESPACE</a></td>
<td>
<code>16</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_NUM_ANNOTATIONS_PROVIDED">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/data_provider.fidl;l=52">MAX_NUM_ANNOTATIONS_PROVIDED</a></td>
<td>
<code>64</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_NUM_ATTACHMENTS_PER_CRASH_REPORT">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=23">MAX_NUM_ATTACHMENTS_PER_CRASH_REPORT</a></td>
<td>
<code>16</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_PROCESS_NAME_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=110">MAX_PROCESS_NAME_LENGTH</a></td>
<td>
<code>64</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_PROGRAM_NAME_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=21">MAX_PROGRAM_NAME_LENGTH</a></td>
<td>
<code>1024</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_THREAD_NAME_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.feedback/crash_reporter.fidl;l=111">MAX_THREAD_NAME_LENGTH</a></td>
<td>
<code>64</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
</table>