Replies: 2 comments
|
Stop dicussing about old version, I don't understand your motivation and what feature you want to have. Prepare a clean state, and only report what you have / want against the latest CI build. |
|
Thanks for the direction. I started over with a fresh isolated environment and reran against the latest successful Core CI build. The earlier writer-side redirect symptom did not reproduce in this clean run: after each in-place replacement, the newly started writer still published successfully to Vector’s safe-zone. What I reproduced twice was a distinct reader-side failure in an already-running scoped process. What I have / what I wantI am not asking Vector to hot-reload replacement legacy-module code. I want to clarify whether an already-running scoped reader should continue resolving the existing An explicit restart requirement would be understandable. The unexpected part is that the reader silently falls back to the module’s app-private preferences path and continues indefinitely with stale last-known-good data. Environment
Controlled reproduction
A direct filesystem check during the run showed the new value in Vector’s safe-zone XML, while the module’s app-private preferences XML remained absent.
It then resolves the app-private path and retains its 5-second last-known-good value:
I repeated the same test with B versionCode 9 → C versionCode 10. The stable reader again retained B’s removed APK path, and reader-only restart again recovered immediately. Source-supported hypothesis, not asserted root causeThe directly observed boundary is that the running reader retains the removed module APK path after the daemon cache update, then selects the app-private preferences path. Current source is consistent with a stale process-local legacy-module path:
I did not instrument the Is reader-only restart the intended legacy-module update contract, or should the stored APK path be refreshed—or the affected reader explicitly restarted/invalidated—after package replacement? |
Uh oh!
There was an error while loading. Please reload this page.
I am asking here before filing a bug because this was a single observation on an older build, and I cannot currently satisfy the bug template's requirement to reproduce on the latest debug build with a manager log archive.
Environment
MODE_WORLD_READABLEplus thexposedsharedprefsmanifest metadata to publish configuration for a hooked appSequence and observation
MODE_WORLD_READABLESharedPreferences update.XSharedPreferencesreaders.The commit returned success and did not throw
SecurityException, but the changed XML landed in the app-privateshared_prefsdirectory. Vector's mirror did not update, and a reader in another UID continued to see stale/missing data.The absence of an exception is consistent with the
ContextImpl.checkModesuppression being active, but this observation alone does not prove that hook was responsible. What I could establish directly was the successful commit, the actual destination path, and the stale mirror.Recovery, with an important limitation
I then changed three things together: upgraded to canary 3110, restarted the Vector daemon, and re-enabled the module in the manager. After that sequence, the same kind of write reached the mirror again and the other-UID reader received the new value.
This does not establish that the Vector upgrade fixed the problem. I did not isolate upgrade vs daemon restart vs module re-enable, and I did not test reboot-only recovery.
Why I am asking
Current master documents
hookNewXSPas installing thecheckModeandgetPreferencesDirhooks together:LegacyDelegateImpl.hookNewXSPIs there framework or process state that must be refreshed after
PACKAGE_REPLACEDfor a legacy module's own process? Could Android's per-process SharedPreferences path cache explain this apparent split even if both hooks were installed? What specific Vector log lines or state markers would best distinguish these cases in a future clean reproduction?I can schedule a controlled latest-debug reproduction later on a separate test device and vary one recovery step at a time. For now I mainly want to avoid turning a one-device correlation into an incorrect version-regression claim.
All reactions