D267
- The package must stage sce_module/, and a rewrite dropped
it
The package must stage sce_module/, and a
rewrite dropped it.
A run died on hardware before the probe with
PRX_SCE_MODULE_LOAD_ERROR - the kernel log's "Lack of a
.prx file in /app0/sce_module is detected". The eboot loaded its four
system libraries and was then refused for having no modules in
/app0/sce_module.
The cause was not the self-header table or the on-console audit,
which a concurrent thread suspected: those are runtime data and a
runtime section, consumed after load, and the probe never runs
when the loader rejects the container first. The added
sceKernelGetdents import is libkernel - a
system library already loaded, not a new dependency. None of it touches
what the eboot needs in sce_module.
The real cause was scripts/build-pkg.sh. When it was
rewritten to build the image through selfish image --root,
the app tree it stages was reduced to eboot.bin alone.
make pkg still built the stubs into
$BUILD/sce_module (via the sce-module
prerequisite), but nothing copied them into the tree the image is made
from - so the filesystem carried the eboot and none of the
.prx the loader requires. The script now stages
$BUILD/sce_module, and refuses with a clear message if it
is absent rather than shipping a package that dies at launch. Verified:
the built image now carries sce_module/libc.prx and
sce_module/libSceFios2.prx.
On what those .prx are, since it looks alarming
and is not. They are not vendor modules and no
vendor code enters the repository or the package. They are built by this
toolchain from src/sce_module.c - a stub whose
module_start/module_stop return success and do
nothing - and named libc.prx / libSceFios2.prx
only because those are the filenames the loader looks for. The loader
refuses to launch a title with an empty sce_module; obSCEne
satisfies that with its own empty modules, the same "fake, and it says
so" principle as the SELF and the package. The real Sony libraries are
loaded by the console from its own /…/common/lib at
runtime, where obSCEne probes them - never shipped, never in the
repo.