Crash reports come in with a AdapterVendorID
and AdapterDeviceID
crash annotations. These are hex codes in the form of 0xNNNN
. The webapp has a lookup table to convert the hex codes into friendly names.
This data is hierarchical. Vendor hex codes are unique. Each vendor has many devices each with a device hex code. Device hex codes aren't unique across multiple vendors.
- digraph G {
rankdir=LR; splines=lines;
- subgraph webapp {
rank=same; reportview [shape=tab, label="report view"]; signatureview [shape=tab, label="signature summary"];
}
adminpage [shape=tab, label="admin"]; model [shape=box3d, label="crashstats_graphicsdevice"];
adminpage -> model [label="produces"]; model -> reportview [label="used by"]; model -> signatureview [label="used by"];
}
The data is stored in the crashstats.GraphicsDevice
Django model. This is the crashstats_graphicsdevice
table in PostgreSQL.
Data is added to the table automatically using the update_graphics_pci
cron job. This job runs once a week to pick up new device ids.
The function for parsing that file is pci_ids__parse_graphics_device_iterable in webapp/crashstats/crashstats/utils.py
.
If you need to, you can edit the table data directly using the Django admin.
Pages in the webapp that use this data:
- report view
- signature summary
They convert the hex codes in the crash reports to human-friendly labels in the table.