Skip to main content
Topic: Conflict with gdm-dinit service (Read 2766 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Conflict with gdm-dinit service

System: Artix Linux 6.16.0-zen

After updating my packages yesterday. Now launching system with gdm at startup interrupts starting dinit user service. Disabling gdm makes turnstile work perfectly well.

So steps to reproduce will be:
  • install artix-linux with dinit;
  • install and set up gdm using gdm-dinit package;
  • install and set up turnstile using turnstile-dinit package.

I know it might be a gdm issue. I just wasn't able to figure out the reason for such weird behaviour. I thought you might help me come up with solution. By saying dinit user service wasn't started by turnstile I mean I checked
Code: [Select]
dinitctl list
and it says no user instance is running. As a result pipewire, pipewire-pulse and wireplumber weren't launched.

Additional information could be: every application has been statring with an insane delay using gdm at startup after packages update. And no problems when manually starting gnome on wayland using
Code: [Select]
XDG_SESSION_TYPE=wayland dbus-run-session gnome-session
Disabling gdm service, rebooting and then enabling it resolves an issue as well as disabling gdm and manually starting gnome, on the next reboot the issue repeats.

Re: Conflict with gdm-dinit service

Reply #1
Hmm... If turnstile has no problem I think for now we need to make dinit-user-spawn and turnstile conflict, or make user enable dinit-user-spawn manually by default. I hope I can get this done by tomorrow.
now only the dinit guy in artix

Re: Conflict with gdm-dinit service

Reply #2
Hmm... If turnstile has no problem I think for now we need to make dinit-user-spawn and turnstile conflict, or make user enable dinit-user-spawn manually by default. I hope I can get this done by tomorrow.

I really appreciate the idea of dinit-user-spawn not by default because turnstile is more useful for me because of exporting dbus session address into login environment. Currently I moved the service file to my home to make sure it doesn't get enabled.

Re: Conflict with gdm-dinit service

Reply #3
Some additional information, which may be usefull:

Code: [Select]
$ ps aux | grep dinit
root         1  0.3  0.0   7416  4096 ?        S    13:18   0:00 /usr/bin/dinit
root       566  0.0  0.0   7036  4272 ?        Ss   13:18   0:00 /usr/bin/dinit-user-spawn
kersh     1806  0.0  0.0   6664  4104 pts/1    S+   13:20   0:00 grep --color=auto dinit

$ ps aux | grep turnstile
root       512  0.0  0.0   7124  4064 ?        Ss   13:18   0:00 /usr/bin/turnstiled
kersh     1944  0.0  0.0   6664  4096 pts/1    S+   13:23   0:00 grep --color=auto turnstile

$ dinitctl list
dinitctl: connecting to socket: /run/user/1000/dinitctl: No such file or directory
dinitctl: perhaps no user instance is running?

It turned out no reboot is necessary to make dinit user instance start.
So I basically disabled gdm using
Code: [Select]
$ doas dinitctl disable gdm
Then in tty I get
Code: [Select]
$ dinitctl list
[[+]     ] boot
[{+}     ] system
[{+}     ] dbus (pid: 2173)
[{+}     ] pipewire-pulse (pid: 2180)
[{+}     ] pipewire (pid: 2178)
[{+}     ] wireplumber (pid: 2179)
[{+}     ] rog-daemon
and then I reenable gdm using
Code: [Select]
doas dinitctl enable gdm
After logging in dinit user instance is still working perfectly.
Here are outputs for the commands shown earlier:
Code: [Select]
$ ps aux | grep dinit
root         1  0.0  0.0   7416  4100 ?        S    13:18   0:00 /usr/bin/dinit
root       566  0.0  0.0   7036  4272 ?        Ss   13:18   0:00 /usr/bin/dinit-user-spawn
kersh     2158  0.0  0.0   6924  4012 ?        S    13:28   0:00 dinit --user --ready-fd 3 --services-dir /run/turnstiled/1000/srv.2158 --services-dir /home/kersh/.config/dinit.d --services-dir /etc/dinit.d/user --services-dir /usr/local/lib/dinit.d/user --services-dir /usr/lib/dinit.d/user
gdm       2266  0.0  0.0   6924  4112 ?        S    13:28   0:00 /usr/bin/dinit --user
kersh     3473  0.0  0.0   6664  4100 pts/0    S+   13:36   0:00 grep --color=auto dinit

$ ps aux | grep turnstile
root       512  0.0  0.0   7124  4064 ?        Ss   13:18   0:00 /usr/bin/turnstiled
root      2157  0.0  0.0   8524  3476 ?        Ss   13:28   0:00 /usr/bin/turnstiled
kersh     2158  0.0  0.0   6924  4012 ?        S    13:28   0:00 dinit --user --ready-fd 3 --services-dir /run/turnstiled/1000/srv.2158 --services-dir /home/kersh/.config/dinit.d --services-dir /etc/dinit.d/user --services-dir /usr/local/lib/dinit.d/user --services-dir /usr/lib/dinit.d/user
kersh     3479  0.0  0.0   6664  4100 pts/0    S+   13:37   0:00 grep --color=auto turnstile

$ dinitctl list
[[+]     ] boot
[{+}     ] system
[{+}     ] dbus (pid: 2173)
[{+}     ] pipewire-pulse (pid: 2180)
[{+}     ] pipewire (pid: 2178)
[{+}     ] wireplumber (pid: 2179)
[{+}     ] rog-daemon

Re: Conflict with gdm-dinit service

Reply #4
As of dinit-rc-0.6.4, dinit-user-spawn-1.0.0-9, turnstile-dinit-0.1.10-2, and dbus-dinit-user-20250819-2, there will be changes of how these are handled.

dinit-rc won't hard depend on any user service enabler (turnstile or dinit-user-spawn), so users will have choice whether to enable the user services or not. While by default dinit-user-spawn may be installed, it won't be enabled by default. Some user services (see dbus-dinit-user) may depend on dinit-user-spawn, but existing turnstile-dinit need not to worry since it has provides=('dinit-user-spawn'). dinit-user-spawn will also conflict with turnstile so anyone using turnstile already can uninstall dinit-user-spawn safely.

Please wait for those packages to reach your mirrors, and my apologies for the inconvenience.
now only the dinit guy in artix

Re: Conflict with gdm-dinit service

Reply #5
Hi konimex,

quick question. How do i remove dinit-user-spawn safely? dinit-rc seems to depend on it. Or am i too impatient?

Code: [Select]
➜ sudo pacman -Syu
:: Paketdatenbanken werden synchronisiert …
 system ist aktuell
 world ist aktuell
 galaxy ist aktuell
 omniverse ist aktuell
:: Vollständige Systemaktualisierung wird gestartet …
Abhängigkeiten werden aufgelöst …
Nach in Konflikt stehenden Paketen wird gesucht …
:: dinit-user-spawn-1.0.0-9 and turnstile-dinit-0.1.10-2 are in conflict. Remove turnstile-dinit? [j/N] N
Fehler: Nicht auflösbare Paketkonflikte gefunden
Fehler: Vorgang konnte nicht vorbereitet werden (In Konflikt stehende Abhängigkeiten)
:: dinit-user-spawn-1.0.0-9 and turnstile-dinit-0.1.10-2 are in conflict

~ as 🧙 took 4s
✗ sudo pacman -R dinit-user-spawn
Abhängigkeiten werden geprüft …
Fehler: Vorgang konnte nicht vorbereitet werden (Kann Abhängigkeiten nicht erfüllen)
:: Entfernen von dinit-user-spawn verletzt Abhängigkeit »dinit-user-spawn>=1.0.0-6«, benötigt von dinit-rc

~ as 🧙
✗ sudo pacman -R dinit-rc
Abhängigkeiten werden geprüft …
Fehler: Vorgang konnte nicht vorbereitet werden (Kann Abhängigkeiten nicht erfüllen)
:: Entfernen von dinit-rc verletzt Abhängigkeit »dinit-rc«, benötigt von dinit


Sorry, the output is in german  ;D

Greetings,
Joseph

Re: Conflict with gdm-dinit service

Reply #6
If your dinit-rc is on 0.6.3, upgrade it to 0.6.4 first, so you can do sudo pacman -Sy dinit-rc.

After that you can just remove dinit-user-spawn and -Syu again.
now only the dinit guy in artix

Re: Conflict with gdm-dinit service

Reply #7
worked like a charm

Thank you

Re: Conflict with gdm-dinit service

Reply #8
Hmm... the latest updates even make a conflict when I try to re-install pipewire-dinit.

pipewire-dinit requires dbus-dinit-user, and dbus-dinit-user requires dinit-user-spawn, which is not available in systems installed turnstiled-dinit.


Re: Conflict with gdm-dinit service

Reply #10
Done. Wait for -3 to hit your mirrors.
now only the dinit guy in artix