Repository navigation
Ship a stub libprivileged-service-client.so for the AU7200, gated to installs where the engine has failed (issue 105) - #119
Merged
Conversation
…installs where the engine has failed (issue 105) The build-e1a648d census is read: of its 27 unresolved names, 23 are wgt::parse exports of libwgt-manifest-handlers.so.1, which the census refused for an undefined typeinfo that libmanifest-parser.so.1 (later on the same list) provides — an order, not a wall. The four left are the blocked library's whole surface as the engine uses it: PS_Mknod, PS_Mount, PS_Umount, PS_ErrorToString, all plain C functions. So the census takes a second pass — a library refused for an undefined symbol is held back, the loaded ones are promoted RTLD_NOLOAD|RTLD_GLOBAL, and it is asked again — and the stub ships: tools/elfprobe/psstub.s, four no-op functions under the engine's soname, no NEEDED, no TEXTREL, in Overscan6/res/. EngineStub dlopens it RTLD_NOW|RTLD_GLOBAL before ewk_init, only on an install whose ledger says the engine already failed there, and withholds it after two launches that never came back with it in. Both report pages carry an `engine stub:` line. tools/engineimports gains the underlinked scenario; tools/elfprobe/build.sh builds both libraries. INTERNALS has the reading of the page and what each possible next report means.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
build-e1a648dpage from the AU7200 (2026-10-03, one relaunch, no install) carries the finished import census, taken ahead of the engine in 1.4 s:115 needed (2 refused: libwgt-manifest-handlers.so.1, libprivileged-service-client.so), 2520 imports, 27 unresolved (23 C++).Read with what the census records beside each name, that is two readings at once:
wgt::parse— the exports oflibwgt-manifest-handlers.so.1, whose refusal wasundefined symbol: _ZTIN6parser15ManifestHandlerE, a typeinfo thatlibmanifest-parser.so.1provides and which is later on the same DT_NEEDED list. Opened alone andRTLD_LOCALit fails; under the engine, with the whole list in one scope, it loads. Not a wall.PS_Mknod,PS_Mount,PS_Umount,PS_ErrorToString— are the blocked library's whole surface as the engine uses it. That is the first reading written down in INTERNALS before the page existed: a no-op stub is buildable, and the build after ships it.So this build does two things:
undefined symbolis held back, the loaded libraries are promoted withRTLD_NOLOAD|RTLD_GLOBAL(nothing new loaded), and it is asked again. The next page should read4 unresolved: PS_Mknod (FUNC), PS_Mount (FUNC), PS_Umount (FUNC), PS_ErrorToString (FUNC).tools/engineimportsgains anunderlinkedscenario that builds exactly that shape and holds the census to 0 refused, 0 unresolved; all scenarios pass.Overscan6/res/libprivileged-service-client.so(5 KB) fromtools/elfprobe/psstub.s: four functions returning 0 (an empty string forPS_ErrorToString),SONAME libprivileged-service-client.so, noNEEDED, noTEXTREL(PC-relative, so the loader never needs a writable code page).EngineStubdlopens itRTLD_NOW|RTLD_GLOBALby absolute path fromOnCreate, after the census and beforeewk_init, so the loader finds the soname already in the process and never opens the file in/usr/libit may not.Two gates stand in for the "diagnostics go behind the engine" rule, since this is the thing being tried and has to be in front:
NativeProbe.EngineFailedHere(), the ledger that only exists on an install whose engine has failed. Everywhere else the header saysengine stub: shipped, not loaded — the engine has not failed on this install.engine-stub.txtindata/getstryingbefore the dlopen andcame backonce the engine answers either way. Twotryinglines with nothing behind them and the stub is withheld, the failure screen returns, the report says so.Only the tizen6 package carries the file.
./build.sh allbuilds all five;unzip -l dist/Overscan-tizen6.tpkshowsres/libprivileged-service-client.so;OverscanProbecompiles.tools/elfprobe/build.shnow builds both libraries; the probe library is left at its committed bytes.INTERNALS has the reading of the page and, written before the next report exists, what each of its five possible shapes means — including the one that means the AU7200 runs Overscan and the one that ends the stub route.