Nixpkgs: KDE wallet crashes on start (plasma5)

Created on 8 Jan 2020  Â·  19Comments  Â·  Source: NixOS/nixpkgs

Describe the bug
During boot, kwalletd5-wrap dumps core: systemd-coredump[1204]: Process 1095 (.kwalletd5-wrap) of user 1000 dumped core.
This prevents kde wallet to authenticate together with my session, and I need to re-enter the password after logging in.

To Reproduce
Steps to reproduce the behavior:

  1. Configure system with kde plasma5 and sddm
  2. Boot it

Expected behavior

kdewallet should not crash on boot

Additional context

Probably related to #68316.
@tenaf0 in that thread seems to have the same issue.

Display manager info:

  • sddm
  • plasma5

Metadata

  • system: "x86_64-linux"
  • host os: Linux 5.4.8-hardened, NixOS, 20.03pre208261.9beb0d1ac2e (Markhor)
  • multi-user?: yes
  • sandbox: yes
  • version: nix-env (Nix) 2.3.2
  • channels(rick): ""
  • channels(root): "nixos-20.03pre208261.9beb0d1ac2e, nixpkgs-20.03pre207249.7e8454fb856"
  • nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

Maintainer information:

# a list of nixpkgs attributes affected by the problem
attribute:
# a list of nixos modules affected by the problem
module:
bug qkde

Most helpful comment

I tested 8021f0a and beside the build issue (I needed to put back kwallet in the buildInputs), the wallet was correctly unlocked after login :)

All 19 comments

I'm getting the same thing on nixos-unstable. We probably need to run a git bisect to figure out when this originated.

I wouldn't mind picking this up, however I'm not sure how to do this exactly. Could you give me some pointers @matthewbauer ? (or anyone else ofc)

I wouldn't mind picking this up, however I'm not sure how to do this exactly. Could you give me some pointers @matthewbauer ? (or anyone else ofc)

To be honest, I'm as confused as you are. coredumpctl info PID and coredumpctl debug PID will give you some more information. It looks like the same thing as https://github.com/NixOS/nixpkgs/issues/68316 where QT_PLUGIN_PATH / QML2_IMPORT_PATH / XDG_DATA_DIRS / XDG_CONFIG_DIRS is set to the wrong value. Perhaps try replacing wrapQtApp with a export XDG_DATA_DIRS=... header in https://github.com/NixOS/nixpkgs/blob/master/pkgs/desktops/plasma-5/kwallet-pam.nix#L11.

How to install a package from my local repository? nix-build ./nixpkgs -A kwallet-pam works, but what's next? Should I install everything from my local repo using nixos-rebuild -I nixpkgs=$NIXPKGS switch while trying to find why the package crashes on every reboot? Or is there an option to only install the kwallet-pam package with different versions?

Would nix-env -f ./nixpkgs -iA kwallet-pam work?

Might have something to do with this update: https://cgit.kde.org/kwalletmanager.git/commit/?id=00dfdbecf60609d5a2a354d8cfadf152dc43b8d4

https://kde.org/announcements/kde-frameworks-5.56.0.php

That changelog lists this:

KAuth

    Tell people they should mostly be using KF5::AuthCore
    Compile our own helper against AuthCore and not Auth
    Introduce KF5AuthCore

Quite likely a super overloaded issue, so not blocking for now. We'll need much more information to figure out what to do.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/go-no-go-meeting-nixos-20-03-markhor/6495/16

I believe @ttuegel mentioned in the GO / NO-GO that it's likely fixed in a plasma update (think it was said it works on master).
So perhaps a specific patch will/can be backported.

I'm not sure, but I'm running unstable and it's not fixed there.

rick@nixos-asus:~$ nix-info -m
 - system: `"x86_64-linux"`
 - host os: `Linux 5.5.13-hardened, NixOS, 20.09pre218613.ae6bdcc5358 (Nightingale)`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.3.3`
 - channels(rick): `""`
 - channels(root): `"nixos-20.09pre218613.ae6bdcc5358, nixpkgs"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

(not sure if what was mentioned was merged to staging)

Mm, just built a master (167ed907498ed6cd4cff1d5045fa9164d5ed8f1c) configuration (in a VM), but the issue still persists.

the used system config

# configuration.nix

# Edit this configuration file to define what should be installed on
# your system.  Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{ config, pkgs, ... }:

{
  # Use the systemd-boot EFI boot loader.
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  boot.kernelPackages = pkgs.linuxPackages_latest_hardened;

  networking.hostName = "nixos-testing"; # Define your hostname.

  # The global useDHCP flag is deprecated, therefore explicitly set to false here.
  # Per-interface useDHCP will be mandatory in the future, so this generated config
  # replicates the default behaviour.
  networking.useDHCP = false;

  # Set your time zone.
  time.timeZone = "Europe/Amsterdam";

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
    vim
    htop
  ];

  programs.bash.enableCompletion = true;

  # Enable the X11 windowing system.
  services.xserver.enable = true;
  services.xserver.layout = "us";

  # Enable touchpad support.
  services.xserver.libinput.enable = true;

  # Enable the KDE Desktop Environment.
  services.xserver.displayManager.sddm.enable = true;
  services.xserver.desktopManager.plasma5.enable = true;

  # Define a user account. Don't forget to set a password with ‘passwd’.
  users.users.rick = {
    isNormalUser = true;
    home = "/home/rick";
    extraGroups = [ "wheel" "networkmanager" ];
    initialPassword = "rikkert";
  };

  # This value determines the NixOS release with which your system is to be
  # compatible, in order to avoid breaking some software such as database
  # servers. You should change this only after NixOS release notes say you
  # should.
  system.stateVersion = "19.09"; # Did you read the comment?
}

I believe @ttuegel mentioned in the GO / NO-GO that it's likely fixed in a plasma update (think it was said it works on master).

Sorry, someone said that it worked on master, and I said _if_ it works on master, then it was the Plasma version bump because nothing addressing this issue has been merged.

A fix is available at https://github.com/NixOS/nixpkgs/pull/84689. If someone else can verify it works, I think we can merge it to master and then release-20.03.

Mm, it seems like it's still happening for me.

Just to be sure, here the steps I've taken to verify:

  • Clone your nixpkgs at branch fix-77290 (40deb26f3f3d95daf5b047c71a6242bfdeac2fbe)
  • Use the configuration listed below to build a vm with nixos-rebuild -I nixpkgs=/the/local/copy/of/fixed/nixpkgs -I nixos-config=configuration.nix build-vm
  • After the build, copy result/bin/run-nixos-testing-vm to the working directory and change the max memory from 384 to 2048, change the max processor cores from 1 to 4 (otherwise it's too slow to work with)
  • Start the VM, login (see default password in config) and check journalctrl -p warn
  • The error kwalletd5-wrap dumped core is still visible in the log


The used configuration

$ cat configuration.nix 
# Edit this configuration file to define what should be installed on
# your system.  Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{ config, pkgs, ... }:

{
  # Use the systemd-boot EFI boot loader.
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  boot.kernelPackages = pkgs.linuxPackages_latest_hardened;

  networking.hostName = "nixos-testing"; # Define your hostname.

  # The global useDHCP flag is deprecated, therefore explicitly set to false here.
  # Per-interface useDHCP will be mandatory in the future, so this generated config
  # replicates the default behaviour.
  networking.useDHCP = false;

  # Set your time zone.
  time.timeZone = "Europe/Amsterdam";

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
    vim
    htop
  ];

  programs.bash.enableCompletion = true;

  # Enable the X11 windowing system.
  services.xserver.enable = true;
  services.xserver.layout = "us";

  # Enable touchpad support.
  services.xserver.libinput.enable = true;

  # Enable the KDE Desktop Environment.
  services.xserver.displayManager.sddm.enable = true;
  services.xserver.desktopManager.plasma5.enable = true;

  # Define a user account. Don't forget to set a password with ‘passwd’.
  users.users.rick = {
    isNormalUser = true;
    home = "/home/rick";
    extraGroups = [ "wheel" "networkmanager" ];
    initialPassword = "rikkert";
  };

  # This value determines the NixOS release with which your system is to be
  # compatible, in order to avoid breaking some software such as database
  # servers. You should change this only after NixOS release notes say you
  # should.
  system.stateVersion = "19.09"; # Did you read the comment?
}

Just as a sidenote, on my own system this is an issue because some applications immediately need the wallet to be unlocked. Of course, because the set of applications in the VM is limited (on purpose), it doesn't show the kwallet login screen immediately. However, I'm fairly certain it will show if I'd start a system that needs the keychain unlocked.

Ugh - it looks like I was missing some things. I definitely had it working at one point. Will retry to verify the fix actually works.

I have nothing productive to add here other than how excited I am at the prospect of having this fixed! Re-entering my password every time I log in is extremely frustrating.

Mm, it seems like it's still happening for me.

Just to be sure, here the steps I've taken to verify:

  • Clone your nixpkgs at branch fix-77290 (40deb26)
  • Use the configuration listed below to build a vm with nixos-rebuild -I nixpkgs=/the/local/copy/of/fixed/nixpkgs -I nixos-config=configuration.nix build-vm
  • After the build, copy result/bin/run-nixos-testing-vm to the working directory and change the max memory from 384 to 2048, change the max processor cores from 1 to 4 (otherwise it's too slow to work with)
  • Start the VM, login (see default password in config) and check journalctrl -p warn
  • The error kwalletd5-wrap dumped core is still visible in the log

The used configuration
Just as a sidenote, on my own system this is an issue because some applications immediately need the wallet to be unlocked. Of course, because the set of applications in the VM is limited (on purpose), it doesn't show the kwallet login screen immediately. However, I'm fairly certain it will show if I'd start a system that needs the keychain unlocked.

Thanks for testing! I think the issue is fixed in https://github.com/NixOS/nixpkgs/commit/8021f0a4a54b03bc9cd1f4c1d40e00fa28ec6ad9. If you could try that out it would be greatly appreciated.

I tested 8021f0a and beside the build issue (I needed to put back kwallet in the buildInputs), the wallet was correctly unlocked after login :)

I tried today to move my NixOS pin to 441a7da8080352881bb52f85e910d8855e83fc55 and ran into the same issue.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

rzetterberg picture rzetterberg  Â·  3Comments

langston-barrett picture langston-barrett  Â·  3Comments

ghost picture ghost  Â·  3Comments

ob7 picture ob7  Â·  3Comments

teto picture teto  Â·  3Comments