Skip to main content
The Dark Art of Postmortem DebuggingRead
Bundle analyzer
Note 01 of 04

A bug rarely lives in one file. A real capture is a hundred files in a dozen formats, and each holds one piece of the identity: the build in one, the kernel in another, the device in none of them alone.

Drop the whole archive. logcat.ai reads every line item, reconciles one device, one build and one clock, and cites each fact back to the file that stated it.

ManifestBNDL-0000-1111Original

Twelve files, twelve clocks. One device, one timeline.

126 line items, 1.4 GB, 12 shown
No.Line itemOwn clock
01bugreport-evb-0000.zip09:12:07 +02:00
02dmesgboot-relative
03last_kmsgprev boot
04can_capture.ascepoch s
05signals.dbcno clock
06telematics_radio.logzone unstated
07vehicle_hal.txt09:12:07 +02:00
08logcat.txt.1 to .9no year
09client_inventory.dbno clock
10ap_events.logepoch s
11trace.perfetto-traceboot ns
12build.propno clock
One consignment12 lines in
DeviceHU-7 head unitfrom lines 02, 07
PlatformAndroid Automotive 14from lines 01, 07
Build8.2.1-rc4from lines 12, 06
Kernel5.15.110from line 02
ClockUTC, five regimes reconciledfrom lines 01 to 04, 06, 08, 11
Window31 h, union of 126 filesfrom every line with a clock
A bundle is a manifest: many line items, one consignment. Every identity fact is assembled from the lines that state it and cited back to them.Illustrative. Synthetic data.
Bundle analyzerCross-file correlation
Note 01 of 04

A bug rarely lives in one file. A real capture is a hundred files in a dozen formats, and each holds one piece of the identity: the build in one, the kernel in another, the device in none of them alone.

Drop the whole archive. logcat.ai reads every line item, reconciles one device, one build and one clock, and cites each fact back to the file that stated it.

Note 02 of 04

Seven of these twelve files keep their own clock, in five regimes. Read one at a time, a fault at 09:12 in one file and at boot+1284 s in another is never seen as the same instant.

ManifestConsignment BNDL-0000-1111field_capture_0000.tar.gz

Twelve files, twelve clocks. One device, one timeline.

Original126 line items, 1.4 GB12 shown
No.Line itemFormatOwn clock
01bugreport-evb-0000.zipbugreport2026-05-14 09:12:07 +02:00
02dmesgkernel[ 1284.331 ] boot-relative
03last_kmsgkernelboot-relative, prev boot
04can_capture.ascCAN trace1715677927.412 epoch s
05signals.dbcreferenceno clock
06telematics_radio.logmodem14:12:07, zone unstated
07vehicle_hal.txtHAL09:12:07 +02:00
08logcat.txt.1 to .9logcat05-14 09:11:58.004, no year
09client_inventory.dbreferenceno clock
10ap_events.lognetwork1715677900 epoch s
11trace.perfetto-traceperfettoboot-relative ns
12build.propconfigno clock
One consignment
Device
HU-7 head unit
from lines 02, 07
Platform
Android Automotive 14
from lines 01, 07
Build
8.2.1-rc4
from lines 12, 06
Kernel
5.15.110
from line 02
Clock
UTC, five regimes reconciled
+02:00 local, boot-relative (two boots), epoch s, epoch ns, one zone unstated. from lines 01 to 04, 06, 08, 11
Window
31 h, union of 126 files
from every line with a clock
A bundle is a manifest: many line items, one consignment. Every identity fact is assembled from the lines that state it and cited back to them; a line that states nothing is not asked.Illustrative. Synthetic data.
Sheet 02 of 11

One question, answered across the whole bundle.

126 files, one situation. The investigation rules out the obvious causes, decodes the CAN trace through the bundle's own signal database, and lines up three files on one timeline to name a root cause none of them shows alone.

Every step cites the line item it read. The answer is a cross-file root cause, not a summary of one log.

Deep Research · one bundle, one question

“Why does the TCU drop telematics every few hours on this build?”

Bundle vehicle_diag_2026-05.tar.gzFiles 126 across 4 domainsSystem Android Automotive · TCU build 8.2Span 31 h · 1.4 GB
The investigation7 of 22 steps
Scan all 126 files for the disconnect
telematics drops surface in 3 logs
H1: WiFi driver regression
ruled out — no driver errors
H2: thermal throttling under load
ruled out — temps nominal
H3: low-memory killer reaping radio
ruled out — no LMK events
Decode the CAN trace via signals.dbc
0x3B0 → TCU_Status = FAULT
Align radio + vehicle-HAL at fault time
RACH timeout → TELEMATICS DISCONNECTED
Confirm TCU firmware state-machine bug
root cause confirmed across 3 files
The answer

TCU firmware state-machine bug

The telematics unit drops every few hours because of a firmware state-machine bug in the TCU — not WiFi, thermals, or memory. Decoding the CAN trace through the bundle's own signal database surfaced a recurring TCU_Status = FAULT (DTC U0155); each one lines up with a RACH timeout in the modem log and a TELEMATICS_STATE → DISCONNECTED transition in the vehicle HAL. No single file showed it — the answer only appears when the three are read on one timeline.

Recurring TCU_Status = FAULT (DTC U0155) on CAN ID 0x3B0
Each fault aligns with a modem RACH timeout (T310 expired)
Vehicle HAL logs TELEMATICS_STATE → DISCONNECTED at every fault window
WiFi, thermal, and memory hypotheses all ruled out across the bundle
Pattern invisible per-file — it only emerges cross-file on a shared timeline
Cited across 3 files: can_capture.asc, telematics_radio.log, vehicle_hal.txt
Recurs every ~3.2 h — matches the TCU watchdog interval
firmware_defect · Telematics / TCU state machine
Illustrative · synthetic data, not a real run
16:10Deep research, one bundle, one question
QuestionWhy does the TCU drop telematics every few hours on this build?
Ruled out firstWi-Fi driver
thermal throttling
low-memory killer
Cited across04can_capture.asc
06telematics_radio.log
07vehicle_hal.txt
The footage is the product answering one question over the whole consignment; the strip beneath is the manifest's own index of what it ruled out and which line items it cites.Illustrative. Synthetic data.
Sheet 03 of 11

One identity, findings rolled up.

Before any question is asked, the bundle is reduced to a single reconciled identity (sheet 1) and a roll-up that shows which findings recur across how many files.

The fault shows in the CAN trace, the timeout in the modem log, the disconnect in the HAL. Only together do they name a root cause, and the roll-up is where they first meet.

Manifest, sheet 2Findings roll-upfield_capture_0000.tar.gz
this fault in 3 of 126 line items
No.Line itemFormatFinding, 07:12 UTC
01bugreport-evb-0000.zipbugreportTHERMAL NOMINAL
02dmesgkernelNO DRIVER CRASH
03last_kmsgkernelNO LMK EVENT
04can_capture.ascCAN traceFAULT
05signals.dbcreference
06telematics_radio.logmodemTIMEOUT
07vehicle_hal.txtHALDISCONNECT
08logcat.txt.1 to .9logcat
09client_inventory.dbreference
10ap_events.lognetwork
11trace.perfetto-traceperfetto
12build.propconfig
Findings across the bundle
Telematics
FAULT in 3 of 126 files, decoded from the CAN trace: the root cause.
Modem
RACH timeout in 2 files, aligned with every TCU fault.
Vehicle HAL
TELEMATICS_STATE to DISCONNECTED at each fault window.
Kernel
No driver crash, no LMK event: Wi-Fi and memory ruled out.
Thermal
Nominal across the capture; throttling ruled out.
Identity
One vehicle from 126 files, every fact cited to its source.
Every leaf is analyzed on its own, then findings roll up across the consignment: which finding recurs, in how many line items, and which lines it is cited to. A line that reads clean is written down as clean.Illustrative. Synthetic data.
Sheet 04 of 11

The archive decodes itself.

Logs are full of raw IDs (CAN arbitration codes, MAC addresses, symbol offsets) whose meaning lives in a separate reference file you cross-reference by hand.

When the bundle carries that file, logcat.ai matches it to the siblings whose raw IDs it resolves, verified by value overlap, and turns opaque codes into named signals and devices.

Manifest, sheet 3Marks and numbersDescription of goods
Verified by value overlap
Reference line items
05signals.dbc
CAN signal database
18 messages, 89 signals
resolves line 04
204 of 204 IDs overlap
09client_inventory.db
device-fingerprint table
fingerprints by MAC prefix
resolves line 10
34 of 34 MACs overlap
Mark, as writtenDescriptionDetail
0x3B0TCU_StatusFAULT, DTC U0155
0x0C1WheelSpeed_FLkm/h
0x0C2WheelSpeed_FRkm/h
0x140YawRatedeg/s
0x153BrakePressurebar
aa:bb:cc:dd:00:01reference phoneAndroid 15
aa:bb:cc:dd:00:02Heron X-2 laptopWindows 11
aa:bb:cc:dd:00:03Wren speakerembedded OS
aa:bb:cc:dd:00:04Finch tablettablet OS
0xffffffc000123456unresolved, not guessedno symbol map found
Most bundles carry their own key. A reference line item states no clock and no identity; it decodes the marks in the sibling whose values it overlaps. A candidate that resolves nothing is not used, so what you read are real matches.Illustrative. Synthetic data.
Sheet 05 of 11

Charts the whole bundle makes.

Auto-generated across files: the composition of the archive, and a roll-up where one file reading zero is itself the clue, every value traced back to a leaf.

The dashboard reads the bundle's structure and what's breaking across files, then draws the charts that fit: composition, and findings by file.

Manifest, sheet 4Charts the whole bundle makes
auto-generated across files
Files by domain126 line items
android41
kernel32
modem29
automotive24
TCU disconnects by filecount per line item
can_capture.asc9
telematics_radio.log9
vehicle_hal.txt8
dmesgreads zero: the clue0
Composition of the archive, by the domain each line item was read as.A roll-up no single file can draw. Red marks the file the fault is decoded from; the kernel log reading zero is itself evidence.
Every value on these charts is traced back to a leaf, and the chart shape is chosen from what the bundle actually contains, not from a template.Illustrative. Synthetic data.
Sheet 06 of 11

The story lives between the files.

The story lives in the relationships between files, not in any single log. Reading them one at a time is how cross-component bugs hide.

Each difficulty below is a line on the manifest that a person has to reconcile by hand, and each is charged again for the next engineer who opens the same archive.

Why multi-file diagnostics are hardfour line items
01Fragmentation

A real capture is a hundred files in a dozen formats. Opening them one by one means never seeing how they line up.

126 items, 12 formats
02Opaque identifiers

Logs are full of raw IDs (CAN arbitration codes, MAC addresses, symbol offsets) whose meaning lives in a separate reference file you cross-reference by hand.

lines 05, 09
03Scattered identity

Which device? Which build? Which window? The answer is spread across a dozen files, each holding one piece.

sheet 1
04Cross-file correlation

The fault shows in the CAN trace, the timeout in the modem log, the disconnect in the HAL. Only together do they name a root cause.

lines 04, 06, 07
The real cost of reading a bundle by handcharged every time
01

Opening a hundred files one at a time, holding the timeline in your head.

02

Cross-referencing raw IDs against a separate database, row by row.

03

Reassembling one device's identity from a dozen scattered files.

04

Missing the cross-component pattern because no single file shows it.

05

Re-deriving all of it for the next engineer who picks up the bundle.

Sheet 07 of 11

A correlation engine over the whole archive.

A correlation engine over the whole archive, rather than a file viewer. Four things it does with a consignment, and the sheet on which each one is written.

What logcat.ai does with a bundlewhere it appears on the manifest
01Reconciled identity

One device, build, and time window assembled from every file in the bundle, each fact cited back to the file it came from.

sheet 1
02Cross-file joins

The archive's own reference files (a CAN signal database, a device-fingerprint table, a symbol map) automatically decode the opaque IDs in their sibling logs.

sheet 3
03Findings roll-up

Every leaf is analyzed, then findings roll up across the bundle: "this fault in 3 of 126 files", with charts no single file can produce.

sheets 2, 4
04Built for scale

A gigabyte and a hundred-plus mixed-format files as one investigation: rotations collapsed, the whole bundle asked as a single question.

1.4 GB, 126 line items
Sheet 08 of 11

What counts as a bundle.

Any archive that captures one situation across many files: the support bundle, diagnostic dump, or device snapshot your team already collects. logcat.ai recognizes the shape and reads it as a whole.

Inside a .zip, .tar, .tar.gz, .tar.xz or .tar.zst. Nested archives (a bugreport zip inside an outer archive) are recognized and expanded.

Kinds of bundle it recognizestypical line items
Kind 01
OEM megadump

A vendor bugreport plus dozens of app logs, dumpsys, and framework traces from one device.

01bugreport.zip
02app_*.log
03dumpsys_*.txt
04framework.trace
Kind 02
Wi-Fi AP snapshot

Access-point logs, per-radio configs, a roaming daemon, and a client-fingerprint database.

01ap_events.log
02radio_2g.conf
03roamd.log
04client_inventory.db
Kind 03
Automotive session

CAN traces, a DBC signal database, telematics and vehicle-HAL logs from one drive cycle.

01can_capture.asc
02signals.dbc
03telematics_radio.log
04vehicle_hal.txt
Kind 04
Kernel panic record

A panic dump alongside rotated dmesg and last-kmsg from the boot that died.

01panic.dump
02dmesg.0 to .3
03last_kmsg
Kind 05
Rotated logcat

A dozen numbered logcat segments the system collapses back into one stream.

01logcat.txt.1 to .12
02one stream
Kind 06
Test-report bundle

An index that fans out to many per-result files, read through its manifest.

01index.json
02result_0001 to _0480
Sheet 09 of 11

How an archive reaches you.

An archive is what an incident leaves behind. Three shapes that pile arrives in, and the sheet of the manifest that answers each.

Three shapes the pile arrives inanswered on
01A pile of files and no thread

A hundred logs, configs, and dumps from one incident, and no idea where to start. The investigation on sheet 2 read all 126 together and named a cross-file root cause: cited, on one timeline.

sheet 2
02Logs full of IDs you can't read

Raw CAN codes, MAC addresses, symbol offsets: meaningless without the reference file next to them. The bundle's own databases decode them automatically, into named signals and devices. Upload an access point's files together and its clients stop being hardware addresses: you get them ranked by activity and by disconnects, and split by device type and client operating system, each resolved to a real device. A candidate that resolves nothing is not used, so what you see are real matches.

sheet 3
03A bundle you need to see, not read

You want the shape of the whole capture, not a hundred open tabs. The dashboard reads the bundle's structure and what's breaking across files, then draws the charts that fit: composition, and findings by file.

sheet 4
Sheet 10 of 11

Cross-file bundle analysis, answered.

Six questions engineers ask before they drop in a real archive, each answered as it stands today.

Frequently asked questionssix line items
Q01What can a bundle contain?

Any mix of files, logcat, bugreports, dmesg, CAN traces, Perfetto, pcap, configs, and reference databases (DBC, SQLite, fingerprint tables), inside a .zip, .tar, .tar.gz, .tar.xz, or .tar.zst. Nested archives (a bugreport zip inside an outer archive) are recognized and expanded.

Q02How does cross-file correlation work?

Each file is analyzed on its own, the bundle's structure and one reconciled identity are computed, and reference files are matched to the siblings whose IDs they resolve, verified by value overlap, not guessed. Deep research and the dashboard then query the whole bundle at once.

Q03What are cross-file joins?

When the archive carries a reference file (a CAN signal database, a device-fingerprint table, a symbol map) logcat.ai uses it to decode the opaque identifiers in its sibling logs automatically. A DBC turns CAN arbitration IDs into named signals; a fingerprint table turns MAC addresses into device and OS.

Q04How big a bundle can I analyze?

Comfortably a gigabyte and a hundred-plus files in one investigation. Rotated logs are collapsed into groups, and very large bundles are triaged so the files that carry signal are analyzed first.

Q05Do I have to upload a bundle?

No. Single files work too, and each has its own analyzer. A bundle is for when the answer lives across files; you get the cross-file correlation only an archive can provide.

Q06Is my bundle data secure?

Your bundle data is encrypted in transit (TLS 1.3) and at rest (AES-256), processed in your own tenant, and never used to train AI models. The cross-file reasoning derived from a bundle stays isolated to your enterprise. Files are deleted after 90 days, or immediately from your dashboard. Enterprise plans offer on-premise deployment for regulated or air-gapped environments.

Sheet 11 of 11

The fastest way to see cross-file correlation is to drop in an actual diagnostic archive (a bugreport plus its siblings, an AP snapshot, a drive-cycle capture) and watch one cited answer come back from all of it.

Bring us a real bundle.

Consignmentyoursline itemsany numberanswerone, cited
Every format is a leaf in the bundlerelated analyzers