The prohibition to move libsystemd objects between threads was added in64a7ef8bc0('man: be more explicit about thread safety of sd_journal'). At the time, this was valid, because we were using the mempool for allocation and it apparently didn't handle access from different threads. Sadlly, the commit links to a bugzilla entry referenced in the commit is not publicly visible anymore, so the details are murky. But we stopped using the mempool ina5d8835c78('mempool: only enable mempool use when linked to libsystemd-shared.so'), with subsequent followup inb01f31954f('Turn mempool_enabled() into a weak symbol'). The restriction added in the man page is not necessary since then. The text in the man page was arguably incorrect in calling the code "thread-agnostic". If the code does not support being touched from threads at all and has global state to tied to the main thread, it is not "agnostic", but just doesn't support threads. (I'm looking into https://github.com/systemd/python-systemd/issues/143, and with the current scheme, the python-systemd module and all python code using libsystemd would be very hard to use. With the change to free-threaded python in python3.13, i.e. the replacement of single Global Interpreter Lock by locking on individual objects, this limitation would become even more constraining.)
System and Service Manager
Details
Most documentation is available on systemd's web site.
Assorted, older, general information about systemd can be found in the systemd Wiki.
Information about build requirements is provided in the README file.
Consult our NEWS file for information about what's new in the most recent systemd versions.
Please see the Code Map for information about this repository's layout and content.
Please see the Hacking guide for information on how to hack on systemd and test your modifications.
Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.
When preparing patches for systemd, please follow our Coding Style Guidelines.
If you are looking for support, please contact our mailing list, join our IRC channel #systemd on libera.chat or Matrix channel
Stable branches with backported patches are available in the stable repo.
We have a security bug bounty program sponsored by the Sovereign Tech Fund hosted on YesWeHack
Repositories with distribution packages built from git main are available on OBS
