| <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>{ |
| "bar": { # namespace |
| "channel": "stable", |
| }, |
| "foo": { # namespace |
| "version": "0.2", |
| } |
| } |
| </code></pre> |
| <p>then:</p> |
| <pre><code>Upsert({ |
| "namespace": "bar", |
| "annotations": [ |
| "version": "1.2.3.45", |
| "channel": "beta", |
| ] |
| }) |
| </code></pre> |
| <p>would result in the server now holding:</p> |
| <pre><code>{ |
| "bar": { # namespace |
| "channel": "beta", # updated |
| "version": "1.2.3.45" # inserted |
| }, |
| "foo": { # namespace |
| "version": "0.2", # 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} |
| |
| <EMPTY> |
| |
| ## 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} |
| |
| <EMPTY> |
| |
| ## 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} |
| |
| <EMPTY> |
| |
| |
| #### Response {#DataProviderController.DisableAndDropPersistentLogs_Response} |
| |
| <EMPTY> |
| |
| ## 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} |
| |
| <EMPTY> |
| |
| |
| #### 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} |
| |
| <EMPTY> |
| |
| |
| #### 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)* |
| |
| <EMPTY> |
| |
| ### 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<<a class='link' href='#Annotation'>Annotation</a>>[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 "version" would appear as "foo.version" in all feedback reports if |
| the namespace is "foo".</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., "build", 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<<a class='link' href='#Annotation'>Annotation</a>>[16]</code> |
| </td> |
| <td><p>A vector of key-value string pairs, e.g., <code><"version", "1.2.3.45"></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., "build.label" and "build.type", so that related annotations are |
| grouped together (here related to "build") 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<<a class='link' href='#Annotation'>Annotation</a>>[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<<a class='link' href='#Attachment'>Attachment</a>>[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., |
| "kernel-panic" or "oom". 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., "canary", "beta", "stable".</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<channel></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., "FileSystemException".</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., "cannot open file".</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 <filename, ZIP archive> 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<<a class='link' href='#Annotation'>Annotation</a>>[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> |