{ "$schema": "http://json-schema.org/draft-04/schema#", "$target_version": 2, "type": "object", "description": "JSON Schema for Socorro crash data to be ingested into Telemetry. Its home is github.com/mozilla-services/socorro", "definitions": { "frames": { "type": "object", "properties": { "frame": { "type": [ "integer", "null" ], "description": "Index of the frame. " }, "module": { "type": [ "string", "null" ], "description": "If present, the basename of the code module containing the instruction in this frame. If missing, the instruction was not in any known module." }, "function": { "type": [ "string", "null" ], "description": "If present, the name of the function containing the instruction in this frame. If missing, either the instruction was not in any known function, or symbols were not available for this module." }, "file": { "type": [ "string", "null" ], "description": "If present, the source file containing `function` in this frame. If absent, source line information may not be available for the function. May be a filename or a string including VCS information in the form :::." }, "line": { "type": [ "integer", "null" ], "description": "If present, the line in `file` corresponding to the instruction in this frame." }, "offset": { "type": [ "string", "null" ], "description": "The value of the instruction pointer in this frame." }, "module_offset": { "type": [ "string", "null" ], "description": "If present, the offset of the instruction pointer in this frame relative to the module base." }, "function_offset": { "type": [ "string", "null" ], "description": "If present, the offset of the instruction pointer in this frame relative to the function base." } } } }, "properties": { "abort_message": { "type": [ "string", "null" ], "description": "The abort message." }, "accessibility": { "type": [ "string", "null" ], "description": "The presence of this field indicates that accessibility services were accessed. Previously, the value sent to Telemetry was 'Active'. Now the value sent is '1'.", "socorroConvertTo": "string" }, "adapter_device_id": { "type": [ "string", "null" ], "description": "The graphics adapter device identifier." }, "adapter_driver_version": { "type": [ "string", "null" ], "description": "The graphics adapter driver version." }, "adapter_subsys_id": { "type": [ "string", "null" ], "description": "The graphics adapter subsystem identifier." }, "adapter_vendor_id": { "type": [ "string", "null" ], "description": "The graphics adapter vendor. This value is sometimes a name, and sometimes a hexidecimal identifier. Common identifiers include: 0x8086 (Intel), 0x1002 (AMD), 0x10de (NVIDIA)." }, "additional_minidumps": { "type": "array", "description": "List the prefixes of the additionnal minidumps, when there are dumps from multiple processes." }, "addons": { "type": "array", "description": "A list of the addons currently enabled at the time of the crash. This takes the form of \"addonid:version,[addonid:version...]\". This value could be empty if the crash happens during startup before the addon manager is enabled, and on products/platforms which don't support addons." }, "addons_checked": { "type": [ "boolean", "null" ], "description": "Value of the 'extensions.checkCompatibility' preference." }, "address": { "type": [ "string", "null" ], "description": "The crashing address. This value is only meaningful for crashes involving bad memory accesses. " }, "android_board": { "type": [ "string", "null" ], "description": "The board used by the Android device." }, "android_brand": { "type": [ "string", "null" ], "description": "The Android device brand." }, "android_cpu_abi": { "type": [ "string", "null" ], "description": "The Android primary CPU ABI being used." }, "android_cpu_abi2": { "type": [ "string", "null" ], "description": "The Android secondary CPU ABI being used." }, "android_device": { "type": [ "string", "null" ], "description": "The android device name." }, "android_hardware": { "type": [ "string", "null" ], "description": "The android device hardware." }, "android_manufacturer": { "type": [ "string", "null" ], "description": "The Android device manufacturer." }, "android_model": { "type": [ "string", "null" ], "description": "The android device model name." }, "android_version": { "type": [ "string", "null" ], "description": "The Android version." }, "app_init_dlls": { "type": [ "string", "null" ], "description": "DLLs injected through the AppInit_DLLs registry key." }, "app_notes": { "type": [ "string", "null" ], "description": "Notes from the application that crashed. Mostly contains graphics-related annotations." }, "available_virtual_memory": { "type": [ "string", "null" ], "description": "The amount of unreserved and uncommited (i.e. available) memory in the process's address space. Note that this memory may be fragmented into many separate segments, so an allocation attempt may fail even when this value is substantially greater than zero.\n\nNote: this is converted from an integer to a string for historical reasons.", "socorroConvertTo": "string" }, "available_physical_memory": { "type": [ "string", "null" ], "description": "The amount of physical memory currently available. This is the amount of physical memory that can be immediately reused without having to write its contents to disk first.\n\nNote: this is converted from an integer to a string for historical reasons.", "socorroConvertTo": "string" }, "bios_manufacturer": { "type": [ "string", "null" ], "description": "The BIOS manufacturer. (deprecated)" }, "build_id": { "type": [ "string", "null" ], "description": "The unique build identifier of this version, which is a timestamp of the form YYYYMMDDHHMMSS." }, "classifications": { "type": "object", "properties": { "jit": { "description": "JIT classification information. (deprecated)", "type": "object", "properties": { "category": { "type": [ "string", "null" ], "description": "JIT classification (deprecated)." }, "category_return_code": { "type": [ "string", "null" ], "description": "JIT classification (deprecated)." } } }, "support": { "type": "object", "properties": { "classification": { "type": [ "string", "null" ], "description": "The support classification of this crash report, assigned by the processors." }, "classification_data": { "type": [ "string", "null" ], "description": "Data of the classification." }, "classification_version": { "type": [ "string", "null" ], "description": "Version of the classification." } } }, "skunk_works": { "type": "object", "properties": { "classification": { "type": [ "string", "null" ], "description": "The skunk classification of this crash report, assigned by the processors." }, "classification_data": { "type": [ "string", "null" ], "description": "Data of the classification." }, "classification_version": { "type": [ "string", "null" ], "description": "Version of the classification." } } } } }, "contains_memory_report": { "type": [ "string", "null" ], "description": "Has content for processed_crash.memory_report or not.\n\nNote: this is converted from a boolean to '0' or '1' for historical reasons.", "socorroConvertTo": "string" }, "cpu_arch": { "type": [ "string", "null" ], "description": "The build architecture. Usually one of: 'x86', 'amd64' (a.k.a. x86-64), 'arm', 'arm64'." }, "cpu_info": { "type": [ "string", "null" ], "description": "Detailed processor info. Usually contains information such as the family, model, and stepping number. " }, "cpu_microcode_version": { "type": [ "string", "null" ], "description": "Microcode version of the CPU." }, "crash_id": { "type": [ "string", "null" ], "description": "Unique identifier of the crash report." }, "date": { "type": [ "string", "null" ], "description": "Date at which the crash report was received by Socorro." }, "dom_fission_enabled": { "type": [ "string", "null" ], "description": "Set to 1 when DOM fission is enabled.", "socorroConvertTo": "string" }, "dom_ipc_enabled": { "type": [ "string", "null" ], "description": "The value of the 'dom.ipc.enabled' preference (in other terms, whether e10s is enabled).", "socorroConvertTo": "string" }, "e10s_cohort": { "type": [ "string", "null" ], "description": "The e10s cohort." }, "flash_version": { "type": [ "string", "null" ], "description": "Version of the Flash Player plugin. (deprecated)" }, "gmp_plugin": { "type": [ "string", "null" ], "description": "Whether it is a GMP plugin crash.", "socorroConvertTo": "string" }, "graphics_critical_error": { "type": [ "string", "null" ], "description": "Log of graphics-related errors." }, "graphics_startup_test": { "type": [ "string", "null" ], "description": "Whether the crash occured in the DriverCrashGuard.", "socorroConvertTo": "string" }, "hang_type": { "type": [ "integer", "null" ], "description": "DEPRECATED EMPTY FIELD. See bug #1762207." }, "install_age": { "type": [ "integer", "null" ], "description": "Length of time since this version was installed. " }, "ipc_channel_error": { "type": [ "string", "null" ], "description": "The IPC channel error." }, "ipc_fatal_error_msg": { "type": [ "string", "null" ], "description": "The message linked to an IPC fatal error." }, "ipc_fatal_error_protocol": { "type": [ "string", "null" ], "description": "The protocol linked to an IPC fatal error." }, "ipc_message_name": { "type": [ "string", "null" ], "description": "The name of the IPC message." }, "ipc_system_error": { "type": [ "string", "null" ], "description": "A replacement of `system_error`. https://bugzilla.mozilla.org/show_bug.cgi?id=1267222\n\nNote: this is converted from an integer to a string for historical reasons.", "socorroConvertTo": "string" }, "is_garbage_collecting": { "type": [ "string", "null" ], "description": "Whether there was a garbage collection in progress.", "socorroConvertTo": "string" }, "java_stack_trace": { "type": [ "string", "null" ], "description": "When Java code crashes due to an unhandled exception, this is the Java Stack Trace. It is usually more useful than the system stack trace given for the crashing thread." }, "jit_category": { "type": [ "string", "null" ], "description": "JIT classification (deprecated)." }, "json_dump": { "type": "object", "description": "The dump as a JSON object.", "properties": { "crash_info": { "type": "object", "properties": { "address": { "type": [ "string", "null" ], "description": "Address of the crash." }, "crashing_thread": { "type": [ "integer", "null" ], "description": "Number of the crashing thread?" }, "type": { "type": [ "string", "null" ], "description": "Type of the crash." } } }, "crashing_thread": { "type": "object", "properties": { "threads_index": { "type": [ "integer", "null" ], "description": "Index of this thread in the list of threads?" }, "frames": { "type": "array", "description": "Top frames of the crashing thread. Max 10 frames.", "items": { "$ref": "#/definitions/frames" } } } }, "main_module": { "type": [ "integer", "null" ], "description": "Index into modules." }, "modules": { "type": "array", "description": "A list of installed modules.", "items": { "type": "object", "properties": { "base_addr": { "type": "string", "description": "Number of frames in the thread." }, "code_id": { "type": "string", "description": "Code identifier." }, "debug_file": { "type": "string", "description": "File containing debug data." }, "debug_id": { "type": "string", "description": "Debug identifier." }, "end_addr": { "type": "string", "description": "Hexadecimal address." }, "filename": { "type": "string", "description": "Name of the file of the module." }, "loaded_symbols": { "type": [ "boolean", "null" ], "description": "Are symbols loaded?" }, "missing_symbols": { "type": [ "boolean", "null" ], "description": "Are symbols missing?" }, "symbol_disk_cache_hit": { "type": [ "boolean", "null" ], "description": "Did loading symbols hit disk cacke?" }, "symbol_url": { "type": [ "string", "null" ], "description": "URL of the symbols for that module." }, "version": { "type": ["string", "null"], "description": "Version of the module." } } } }, "pid": { "type": [ "integer", "null" ], "description": "Process ID of the crashing process." }, "status": { "type": [ "string", "null" ], "description": "Status of the output of the stackwalker. Can be \"OK\", \"ERROR_*\" or \"SYMBOL_SUPPLIER_INTERRUPTED\"." }, "system_info": { "type": "object", "properties": { "cpu_arch": { "type": [ "string", "null" ], "description": "Architecture of the CPU." }, "cpu_count": { "type": [ "integer", "null" ], "description": "Number of CPU cores." }, "cpu_info": { "type": [ "string", "null" ], "description": "Extended name of the CPU." }, "os": { "type": [ "string", "null" ], "description": "Operating System." }, "os_ver": { "type": [ "string", "null" ], "description": "Operating System Version." } } }, "thread_count": { "type": [ "integer", "null" ], "description": "Number of threads." }, "threads": { "type": "array", "description": "All the threads.", "items": { "type": "object", "properties": { "frame_count": { "type": [ "integer", "null" ], "description": "Number of frames in the thread." }, "frames": { "type": "array", "description": "All frames of the thread.", "items": { "$ref": "#/definitions/frames" } } } } } } }, "last_crash": { "type": [ "integer", "null" ], "description": "Length of time between the previous crash submission and this one. Low values indicate repeated crashes." }, "memory_measures": { "type": "object", "description": "Memory measurements collected or computed from the memory_report.", "properties": { "explicit": { "type": [ "integer", "null" ], "description": "The 'explicit' measurement from the memory report. See about:memory for a fuller description." }, "gfx_textures": { "type": [ "integer", "null" ], "description": "The 'gfx-textures' measurement from the memory report. See about:memory for a fuller description." }, "ghost_windows": { "type": [ "integer", "null" ], "description": "The 'ghost-windows' measurement from the memory report. See about:memory for a fuller description." }, "heap_allocated": { "type": [ "integer", "null" ], "description": "The 'heap-allocated' measurement from the memory report. See about:memory for a fuller description." }, "heap_overhead": { "type": [ "integer", "null" ], "description": "The 'heap-overhead' measurement from the memory report. See about:memory for a fuller description." }, "heap_unclassified": { "type": [ "integer", "null" ], "description": "The 'heap-unclassified' measurement from the memory report. See about:memory for a fuller description." }, "host_object_urls": { "type": [ "integer", "null" ], "description": "The 'host-object-urls' measurement from the memory report. See about:memory for a fuller description." }, "images": { "type": [ "integer", "null" ], "description": "The 'images' measurement from the memory report. See about:memory for a fuller description." }, "js_main_runtime": { "type": [ "integer", "null" ], "description": "The 'js-main-runtime' measurement from the memory report. See about:memory for a fuller description." }, "private": { "type": [ "integer", "null" ], "description": "The 'private' measurement from the memory report. See about:memory for a fuller description." }, "resident": { "type": [ "integer", "null" ], "description": "The 'resident' measurement from the memory report. See about:memory for a fuller description." }, "resident_unique": { "type": [ "integer", "null" ], "description": "The 'resident-unique' measurement from the memory report. See about:memory for a fuller description." }, "system_heap_allocated": { "type": [ "integer", "null" ], "description": "The 'system-heap-allocated' measurement from the memory report. See about:memory for a fuller description." }, "top_none_detached": { "type": [ "integer", "null" ], "description": "The 'top(none)/detached' measurement from the memory report. See about:memory for a fuller description." }, "vsize": { "type": [ "integer", "null" ], "description": "The 'vsize' measurement from the memory report. See about:memory for a fuller description." }, "vsize_max_contiguous": { "type": [ "integer", "null" ], "description": "The 'vsize-max-contiguous' measurement from the memory report. See about:memory for a fuller description." } } }, "memory_report": { "type": "object", "description": "Data about the memory usage of the software, generated client-side when a crash report happens because of a memory issue.", "properties": { "version": { "type": [ "integer", "null" ], "description": "A version number. " }, "hasMozMallocUsableSize": { "type": "boolean", "description": "Has Moz Malloc usable size? " }, "reports": { "type": "array", "description": "A list of reports about various aspects of the memory.", "items": { "type": "object", "properties": { "kind": { "type": [ "integer", "null" ], "description": "Number that tells what kind of report it is. " }, "description": { "type": [ "string", "null" ], "description": "A description of what the report is. " }, "process": { "type": [ "string", "null" ], "description": "The concerned process, with its pid. " }, "amount": { "type": [ "integer", "null" ], "description": "The amount of things." }, "units": { "type": [ "integer", "null" ], "description": "The unit of the amount of things." }, "path": { "type": [ "string", "null" ], "description": "A path to the resource being described." } } } } } }, "minidump_sha256_hash": { "type": [ "string", "null" ], "description": "SHA256 hash of the minidump if there was one." }, "moz_crash_reason": { "type": [ "string", "null" ], "description": "For aborts caused by MOZ_CRASH, MOZ_RELEASE_ASSERT and related macros, this is the accompanying description." }, "oom_allocation_size": { "type": [ "string", "null" ], "description": "The size of the allocation that caused the OOM crash.\n\nNote: this is converted from an integer to a string for historical reasons.", "socorroConvertTo": "string" }, "platform": { "type": [ "string", "null" ], "description": "Basic name of the operating system. Can be \"Windows NT\", \"Mac OS X\" or \"Linux\". Use `platform_pretty_version` for a more precise OS name including version." }, "platform_pretty_version": { "type": [ "string", "null" ], "description": "A better platform name, including version for Windows and Mac OS X." }, "platform_version": { "type": [ "string", "null" ], "description": "Version of the operating system." }, "plugin_filename": { "type": [ "string", "null" ], "description": "When a plugin process crashes, this is the name of the file of the plugin loaded into that process." }, "plugin_name": { "type": [ "string", "null" ], "description": "When a plugin process crashes, this is the name of the plugin loaded into that process." }, "plugin_version": { "type": [ "string", "null" ], "description": "When a plugin process crashes, this is the version of the plugin loaded into that process." }, "process_type": { "type": [ "string", "null" ], "description": "What type of process the crash happened in. When the main process crashes, this will not be present. But when a plugin or content process crashes, this will be \"plugin\" or \"content\"." }, "processor_notes": { "type": [ "string", "null" ], "description": "Notes of the Socorro processor, contains information about what changes were made to the report during processing." }, "product": { "type": [ "string", "null" ], "description": "Name of the software." }, "productid": { "type": [ "string", "null" ], "description": "Identifier of the software." }, "proto_signature": { "type": [ "string", "null" ], "description": "A concatenation of the signatures of all the frames of the crashing thread." }, "reason": { "type": [ "string", "null" ], "description": "The crash's exception kind. Different OSes have different exception kinds. Example values: 'EXCEPTION_ACCESS_VIOLATION_READ', 'EXCEPTION_BREAKPOINT', 'SIGSEGV'. " }, "release_channel": { "type": [ "string", "null" ], "description": "The update channel that the user is on. Typically \"nightly\", \"aurora\", \"beta\", or \"release\", but this may also be other values like \"release-cck-partner\"." }, "safe_mode": { "type": [ "string", "null" ], "description": "Whether Firefox was running in Safe Mode.\n\nNote: this is converted from a boolean to '0' or '1' for historical reasons.", "socorroConvertTo": "string" }, "signature": { "type": [ "string", "null" ], "description": "This is the field most commonly used for aggregating individual crash reports into a group. It usually contains one or more stack frames from the crashing thread. The stack frames may also be augmented or replaced with other tokens such as 'OOM | small' or 'shutdownhang' that further identify the crash kind. " }, "shutdown_progress": { "type": [ "string", "null" ], "description": "See https://bugzilla.mozilla.org/show_bug.cgi?id=1038342" }, "startup_crash": { "type": [ "string", "null" ], "description": "Annotation that tells whether the crash happened before the startup phase was finished or not.\n\nNote: this is converted from a boolean to '0' or '1' for historical reasons.", "socorroConvertTo": "string" }, "submitted_from_infobar": { "type": [ "string", "null" ], "description": "Whether the crash report was submitted through the infobar.\n\nNote: this is converted from a boolean to '0' or '1' for historical reasons.", "socorroConvertTo": "string" }, "theme": { "type": [ "string", "null" ], "description": "The current theme." }, "topmost_filenames": { "type": [ "string", "null" ], "description": "Paths of the files at the top of the stack." }, "total_physical_memory": { "type": [ "string", "null" ], "description": "The total amount of physical memory.\n\nNote: this is converted from an integer to a string for historical reasons.", "socorroConvertTo": "string" }, "total_virtual_memory": { "type": [ "string", "null" ], "description": "The size of the user-mode portion of the virtual address space of the calling process. This value depends on the type of process, the type of processor, and the configuration of the operating system. 32-bit processes usually have values in the range 2--4 GiB. 64-bit processes usually have *much* larger values.\n\nNote: this is converted from an integer to a string for historical reasons.", "socorroConvertTo": "string" }, "uptime": { "type": [ "integer", "null" ], "description": "Length of time the process was running before it crashed. Small values (from 0 to 5 or so) usually indicate start-up crashes." }, "useragent_locale": { "type": [ "string", "null" ], "description": "The locale of the Firefox installation." }, "user_comments": { "type": [ "string", "null" ], "description": "Comments entered by the user when they crashed." }, "uuid": { "type": [ "string", "null" ], "description": "Unique identifier of the report." }, "version": { "type": [ "string", "null" ], "description": "The product version number. A value lacking any letters indicates a normal release; a value with a 'b' indicates a Beta release; a value with an 'a' indicates an Aurora (a.k.a. Developer Edition) release; a value with 'esr' indicates an Extended Service Release. " }, "winsock_lsp": { "type": [ "string", "null" ], "description": "DEPRECATED EMPTY FIELD. See bug #1762000." } } }