You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 3d8090f
Browse filesBrowse the repository at this point in the historyBrowse files
Stop the parasitic manager crashing on its first network request (#802)
OkHttp 5's Android artifact keeps the public suffix list in assets/, reached
through a process-static Context set from androidx.startup. Parasitically the
manager's manifest is never installed, so that provider never runs and
DnsOverHttps -- which asks the list whether a host is private before opening
any socket -- died with "Unable to load PublicSuffixDatabase.list" on the first
lookup. Coil was already hand-initialised for this reason; OkHttp was not.
Two things made that fatal rather than degrading: VectorDns caught only
UnknownHostException, so an IllegalStateException escaped it and the fallback
never engaged; and canaryBuilds and frameworkReleases called get() unguarded,
with no CoroutineExceptionHandler anywhere in the manager, so the throw landed
on the main thread.
Coil's own initialisation then moves out of MainActivity to
ServiceLocator.attach, for the same reason OkHttp's did: the debug demo host
never opens MainActivity, so it had no image loader at all.
Separately, for diagnosis: off, bypassed by a proxy, and latched onto the
system resolver all looked identical from the sheet, so VectorDns now records
what each lookup did and the sheet renders it, with a way to clear the latch.
Two fixes fell out:
- `direct` was a lazy val, so the proxy check ran once per process and joining
a VPN mid-session was invisible. Read per lookup now.
- The failure line named the host being resolved, which UnknownHostException
already carries as its whole message -- so it printed twice while which way
it failed went missing.
Finally, a crash record is discarded when another build wrote it. A record
outlives the build that made it, so the status card kept showing a crash the
running build had already fixed -- which is what #799 was answered with: five
traces from the build before the one that fixed them.
Fixes#799
0 commit comments