931bf613b1
Live windows-latest proof settled it: a running Chrome opens its cookie DB deny-all (even CreateFile with FILE_SHARE_READ|WRITE|DELETE fails; sqlite mode=ro/immutable/nolock all 'unable to open'), so copy-while-running is impossible on Windows without VSS/admin — and the prior code HUNG ~24min on the locked file. Fix: a fast up-front lock probe (_profile_is_locked: one open() of the active profile's cookie DB; PermissionError = locked) runs BEFORE any copy in snapshot_real_profile. If locked, bail immediately with 'fully quit the browser (incl. background/tray) and retry, or turn browser.use_real_profile off'. Never hangs, never a silent signed-out copy. POSIX has no mandatory locking so the probe never trips there — copy-while-running still works on macOS/Linux. Docs: admonition stating Windows needs the browser fully closed (background apps included); the live-drive-while-running path is #95669. Tests: lock-probe unit coverage (readable/no-db/PermissionError), snapshot fails-fast-no-copytree when locked. Windows live E2E asserts the fast-fail contract (returns <30s with the quit message) + the read-strategy diagnostic.