67f7b43136
It's best practice to run as little code as possible as root (especially when listening to network ports). When not itself running as root already, remote-fw-service.py has always tried to invoke cavstool.py with "sudo". Unfortunately this looks like it never worked; at least not on Ubuntu 22 where this commit was tested. Moreover it did not fail immediately but mysteriously timed out without any useful error message. - The first, most obvious bug was that "sudo" does not propagate SIGKILL (and a few other signals), see "man sudo". Compare: ``` $ sudo sleep 30 & $ kill $! # sudo propagates the TERM signal and sleep is terminated $ sudo sleep 30 & sudoPID=$! $ kill -KILL $sudoPID $ ps xfao pid,ppid,pgid,sid,comm | grep -C 5 -e PID -e sleep -e sudo ``` Fix this by invoking proc.terminate() first before proc.kill(). proc.terminate() is more "polite" with cavstool even when not using sudo. - Second issue: when signals are sent to sudo, strace shows that its signal handler invokes `getpgid()` and then ignores signals coming from its own process group. `man sudo` states: "sudo will not relay signals that were sent by the command it is running...", which seems related. `start_new_session=True` option moves sudo to a different PGID which stops sudo from ignoring signals from its remote-fw-service.py parent. Signed-off-by: Marc Herbert <marc.herbert@intel.com> |
||
---|---|---|
.github | ||
arch | ||
boards | ||
cmake | ||
doc | ||
drivers | ||
dts | ||
include/zephyr | ||
kernel | ||
lib | ||
misc | ||
modules | ||
samples | ||
scripts | ||
share | ||
snippets | ||
soc | ||
submanifests | ||
subsys | ||
tests | ||
.checkpatch.conf | ||
.clang-format | ||
.codecov.yml | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.gitlint | ||
.mailmap | ||
.yamllint | ||
CMakeLists.txt | ||
CODE_OF_CONDUCT.md | ||
CODEOWNERS | ||
CONTRIBUTING.rst | ||
Kconfig | ||
Kconfig.zephyr | ||
LICENSE | ||
MAINTAINERS.yml | ||
README.rst | ||
VERSION | ||
version.h.in | ||
west.yml | ||
zephyr-env.cmd | ||
zephyr-env.sh |
.. raw:: html <a href="https://www.zephyrproject.org"> <p align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="doc/_static/images/logo-readme-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="doc/_static/images/logo-readme-light.svg"> <img src="doc/_static/images/logo-readme-light.svg"> </picture> </p> </a> <a href="https://bestpractices.coreinfrastructure.org/projects/74"><img src="https://bestpractices.coreinfrastructure.org/projects/74/badge"></a> <a href="https://github.com/zephyrproject-rtos/zephyr/actions/workflows/twister.yaml?query=branch%3Amain"> <img src="https://github.com/zephyrproject-rtos/zephyr/actions/workflows/twister.yaml/badge.svg?event=push"></a> The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with security in mind. The Zephyr OS is based on a small-footprint kernel designed for use on resource-constrained systems: from simple embedded environmental sensors and LED wearables to sophisticated smart watches and IoT wireless gateways. The Zephyr kernel supports multiple architectures, including ARM (Cortex-A, Cortex-R, Cortex-M), Intel x86, ARC, Nios II, Tensilica Xtensa, and RISC-V, SPARC, MIPS, and a large number of `supported boards`_. .. below included in doc/introduction/introduction.rst Getting Started *************** Welcome to Zephyr! See the `Introduction to Zephyr`_ for a high-level overview, and the documentation's `Getting Started Guide`_ to start developing. .. start_include_here Community Support ***************** Community support is provided via mailing lists and Discord; see the Resources below for details. .. _project-resources: Resources ********* Here's a quick summary of resources to help you find your way around: * **Help**: `Asking for Help Tips`_ * **Documentation**: http://docs.zephyrproject.org (`Getting Started Guide`_) * **Source Code**: https://github.com/zephyrproject-rtos/zephyr is the main repository; https://elixir.bootlin.com/zephyr/latest/source contains a searchable index * **Releases**: https://github.com/zephyrproject-rtos/zephyr/releases * **Samples and example code**: see `Sample and Demo Code Examples`_ * **Mailing Lists**: users@lists.zephyrproject.org and devel@lists.zephyrproject.org are the main user and developer mailing lists, respectively. You can join the developer's list and search its archives at `Zephyr Development mailing list`_. The other `Zephyr mailing list subgroups`_ have their own archives and sign-up pages. * **Nightly CI Build Status**: https://lists.zephyrproject.org/g/builds The builds@lists.zephyrproject.org mailing list archives the CI nightly build results. * **Chat**: Real-time chat happens in Zephyr's Discord Server. Use this `Discord Invite`_ to register. * **Contributing**: see the `Contribution Guide`_ * **Wiki**: `Zephyr GitHub wiki`_ * **Issues**: https://github.com/zephyrproject-rtos/zephyr/issues * **Security Issues**: Email vulnerabilities@zephyrproject.org to report security issues; also see our `Security`_ documentation. Security issues are tracked separately at https://zephyrprojectsec.atlassian.net. * **Zephyr Project Website**: https://zephyrproject.org .. _Discord Invite: https://chat.zephyrproject.org .. _supported boards: http://docs.zephyrproject.org/latest/boards/index.html .. _Zephyr Documentation: http://docs.zephyrproject.org .. _Introduction to Zephyr: http://docs.zephyrproject.org/latest/introduction/index.html .. _Getting Started Guide: http://docs.zephyrproject.org/latest/develop/getting_started/index.html .. _Contribution Guide: http://docs.zephyrproject.org/latest/contribute/index.html .. _Zephyr GitHub wiki: https://github.com/zephyrproject-rtos/zephyr/wiki .. _Zephyr Development mailing list: https://lists.zephyrproject.org/g/devel .. _Zephyr mailing list subgroups: https://lists.zephyrproject.org/g/main/subgroups .. _Sample and Demo Code Examples: http://docs.zephyrproject.org/latest/samples/index.html .. _Security: http://docs.zephyrproject.org/latest/security/index.html .. _Asking for Help Tips: https://docs.zephyrproject.org/latest/develop/getting_started/index.html#asking-for-help