Loading init/README.md +6 −0 Original line number Diff line number Diff line Loading @@ -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. Loading init/service.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
init/README.md +6 −0 Original line number Diff line number Diff line Loading @@ -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. Loading
init/service.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -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