pleroma.debian.social

pleroma.debian.social

werdahias (tired) | @werdahias@pleroma.debian.social

Debian Developer. KiCad Contributor. EE student.
Likes hiking, reading and free software.
#RightToRepair
"Freiheit ist immer Freiheit des anders Denkenden." - Rosa Luxemburg

@cccpresser convinced, submitted it now.

Lyricsposting
I read the graffiti in the bathroom stall
Like the holy scriptures of the shopping mall
And so it seemed to confess
It didn't say much, but it only confirmed
That the center of the Earth is the end of the world
And I could really care less

Train ride result:

- Uploaded 3 packages, fixing 1 bug
- Prepared 1 update for another
- Acquired 1 coffee

#Debian

Average TI experience be like:
A checkbox asking if I am representing or ondering on behalf of a military entity

What a nice day for a kernel build

systemd

So, systemd's NOTIFY_SOCKET readiness notification mechanism has a sort of authentication mechanism by pid: it doesn't like it when the notification is sent from another process than the main one, unless you add the NotifyAccess=all directive. Okay, fair.

Except that even with this directive, it still can fail for some reason:

if an auxiliary process of the unit sends an sd_notify() message and immediately exits, the service manager might not be able to properly attribute the message to the unit, and thus will ignore it, even if NotifyAccess=all is set for it.

Huh? Even if the supervisor wants to check that the MAINPID= given in the message is the relevant unit, it shouldn't need the notifier process to still be around, but, let's ignore that for now. So, it has a barrier mechanism to tell the notifier to stick around until the supervisor has acknowledged it. What is that barrier mechanism? The notifier passes an fd to the supervisor via SCM_RIGHTS in the notification message, and when the supervisor closes that fd, it means it has acked the notification, and the notifier can now exit.

That's right, folks: it's a notification that the notification has been received!

There are two mistakes here: 1. the supervisor doesn't need the notifier process to be alive when processing the notification, and 2. NOTIFY_SOCKET being a socket means that any process can connect to it so the supervisor needs to authenticate the relevant unit.

And that is how a bad design decision cascades into a maze of complexity and inefficiency, and a pain to implement. Unless you're willing to use libsystemd to get access to sd_pid_notify_barrier(), good luck getting this to work right.

(systemd people will say this is conspiratorial, but if they wanted to force users to link against libsystemd, they wouldn't behave differently. But I really don't care if it's intentional or not. If it's not intentional, it's just terrible engineering.)

What would be a simpler way to handle all this? Have the supervisor run the unit with a pipe from the daemon to the supervisor, not a socket anyone can connect to. Processes that can write to the pipe are the ones that can inherit it, which means they're necessarily part of the same unit. No need for authentication via pid. When the supervisor receives a certain token on the pipe (e.g. a newline), it means that the daemon is ready. In the daemon or any process notifying on its behalf, that spells: write(fd, "\n", 1); and that's it.

In other words: the s6 readiness notification protocol, which is exactly what is described in the above paragraph, is as efficient as systemd's synchronization protocol for its notification protocol.

The real tragedy is that when you go through systemd with a looking glass, every part of it is this way. It still works, and nobody notices the inefficiencies because modern machines are blazingly fast, but it is. so. bad.

(Edit: typos)

Work OH: "Sieht ja auch so aus wie wenn der Laster die Bauteile draufgekotzt hat"

Tuned into West Coast radio, and the third song is Dark Side Of The Moon.

Perfect.

Fuck me, still need to do all slides fro #Easterhegg

@mirabilos having interacted with them, I would hope not. I also hate the slop, but please try not to discredit genuine contributors

Hm, has anyone designed something with a TMUXHS4446? Thought about building a USB-C -> 2 DP + USB-C utilizing this today. #electronics

Computing in the year 2029 as depicted in UNIX WORLD magazine, 1985.

Retro-futuristic scene of a woman with a silver bob haircut in a white outfit firing rainbow laser beams toward three computer monitors, with a wall calendar reading “March 1, 2029.”

We're happy to announce a long-term partnership with Motorola. We're collaborating on future devices meeting our privacy and security standards with official GrapheneOS support.

https://motorolanews.com/motorola-three-new-b2b-solutions-at-mwc-2026/

@fabos is da Stift ebba a Depp?

ssh is an obscure but widely-deployed command. It stands for Secure Snake Home and was made in the 90s to securely play snake online

I made a massively multiplayer backend for it with support for thousands of concurrent snake players

ssh snakes.run to join!

Ende-zu-Ende-verschusselt

#Debian work the last week:
- Got arduino-cli, bibiman, ripgrep-all and skim uploaded
- Uploaded gst-thumbnailers to unstable
- Updated railway-gtk to the latest version
- Sponsored uploads for tree-sitter* packages
- Started work for various rust package transitions

Damn, Inuyasha didn't have to hit like that. Unfortunately still true today.

»