Merge "init: add tips for debugging linker errors when launching init services"
This commit is contained in:
commit
3699dbe2e0
|
@ -784,6 +784,12 @@ affected.
|
|||
|
||||
Debugging init
|
||||
--------------
|
||||
When a service starts from init, it may fail to `execv()` the service. This is not typical, and may
|
||||
point to an error happening in the linker as the new service is started. The linker in Android
|
||||
prints its logs to `logd` and `stderr`, so they are visible in `logcat`. If the error is encountered
|
||||
before it is possible to access `logcat`, the `stdio_to_kmsg` service option may be used to direct
|
||||
the logs that the linker prints to `stderr` to `kmsg`, where they can be read via a serial port.
|
||||
|
||||
Launching init services without init is not recommended as init sets up a significant amount of
|
||||
environment (user, groups, security label, capabilities, etc) that is hard to replicate manually.
|
||||
|
||||
|
|
|
@ -490,7 +490,8 @@ Result<void> Service::Start() {
|
|||
SetProcessAttributesAndCaps();
|
||||
|
||||
if (!ExpandArgsAndExecv(args_, sigstop_)) {
|
||||
PLOG(ERROR) << "cannot execve('" << args_[0] << "')";
|
||||
PLOG(ERROR) << "cannot execv('" << args_[0]
|
||||
<< "'). See the 'Debugging init' section of init's README.md for tips";
|
||||
}
|
||||
|
||||
_exit(127);
|
||||
|
|
Loading…
Reference in New Issue