Skip to content

Skip Chromium databases that cannot be read instead of ending the artifact - #1136

Open
abrignoni wants to merge 1 commit into
mainfrom
claude/goofy-noether-88279f
Open

Skip Chromium databases that cannot be read instead of ending the artifact#1136
abrignoni wants to merge 1 commit into
mainfrom
claude/goofy-noether-88279f

Conversation

@abrignoni

@abrignoni abrignoni commented Aug 16, 2026

Copy link
Copy Markdown
Owner

Guards twelve Chromium artifacts so one unreadable database no longer ends the artifact.

  • Each of these looped over its matching databases with no guard around the query, so a file that could not be read raised out of the loop and the artifact returned nothing for the whole image, dropping every browser already collected. The file is now logged and skipped.
  • SQLite treats a non-empty <db>-journal sidecar as a hot journal and starts a recovery that needs to write, which a mode=ro handle cannot do. pixel3_a12 carries one such file, the Gmail WebView Web Data under data_mirror, whose sidecar is 16 bytes of LevelDB text rather than a rollback journal. Driving get_chromeAutofill over that file plus a healthy Chrome Web Data from the same image raises on main and returns the healthy database's 3 rows on this branch.
  • That file is no longer reached in a normal run, since the storage-view dedupe in Dedupe duplicate storage paths in per-file artifacts #1135 selects the data/data spelling of the same database. No registered corpus currently exercises the path, so these are guards against a reachable failure rather than repairs of an observed one.
  • Covers chromeAutofill, chrome.py (Web History, Web Visits, Search Terms, Downloads, Keyword Search Terms), chromeCookies, chromeLoginData, chromeMediaHistory, chromeDIPS, chromeNetworkActionPredictor and chromeOfflinePages. chrome.py and chromeMediaHistory route their queries through one helper each. report_file now lists only the files actually read.
  • Sample data for both Autofill artifacts re-derived across all 17 registered phone corpora, up from 10 and 12.

Verified with aleapp.py profile runs over every registered Android corpus, main against this branch: no error banners either side and 25,774 rows either side, so the guards change nothing where nothing fails.

@abrignoni abrignoni added the Needs Cross Core Leveling for a PR that needs to be applied across other cores. remove once leveled to all. label Aug 16, 2026
…ifact

Twelve artifacts opened each matching database with no guard around the query,
so one unreadable file raised out of the loop and the artifact returned nothing
for the whole image, dropping every browser already collected.

SQLite treats a non-empty '<db>-journal' sidecar as a hot journal and starts a
recovery that has to write, which a mode=ro handle cannot do, so the first
statement raises 'attempt to write a readonly database'. pixel3_a12 carries
such a file: the Gmail WebView 'Web Data' under data_mirror, whose sidecar is
16 bytes of LevelDB text rather than a rollback journal. Driving
get_chromeAutofill over that file plus a healthy Chrome 'Web Data' from the
same image raises on main and returns the healthy database's 3 rows here.

That file is no longer reached in a normal run, because the storage-view dedupe
added in #1135 selects the data/data spelling of the same database, so no
registered corpus currently exercises the path. These are guards against a
reachable failure rather than repairs of an observed one, and the full sweep
below is unchanged by them.

Covers chromeAutofill, chrome.py (Web History, Web Visits, Search Terms,
Downloads, Keyword Search Terms), chromeCookies, chromeLoginData,
chromeMediaHistory (Sessions, Playbacks, Origins), chromeDIPS,
chromeNetworkActionPredictor and chromeOfflinePages. chrome.py and
chromeMediaHistory route their queries through one helper each rather than
repeating the guard, and report_file now lists only the files actually read.

Sample data for both Autofill artifacts re-derived from aleapp.py profile runs
over all 17 registered phone corpora, which also extends the recorded set from
10 and 12 corpora to 17.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@abrignoni
abrignoni force-pushed the claude/goofy-noether-88279f branch from 747f0b2 to 30f487f Compare August 16, 2026 20:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs Cross Core Leveling for a PR that needs to be applied across other cores. remove once leveled to all.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant