X11 freeze after upgrade to 22.11 - how to debug?

Hi,
after upgrading from NixOS 22.05 to 22.11, X11 constantly kind of “freezes”:

  • I can still move the mouse and toggle the NumLock-LED, and the programs keep running and update their output (e.g. a video in Chromium continues to run incl. video and audio).
  • But:
    • Mouse clicks and keyboard input is ignored.
    • The mousepointer-symbol does not change anymore.
    • Icons on the deskop get omitted or completely gray.
    • If I kill a program (e.g. Ctrl-Alt-F1 + login + kill), the program stops running but it’s GUI on X11 is still shown and frozen.
    • The only way I currently know to stop this, is to kill X (killall X as root).
    • /var/log/Xorg.0.log and .xsession-errors do not show any message/error about this.

After re-booting to 22.05, it works again.
This is definitely a bug, but I don’t know where (GPU driver? X11? Kernel?).

Does anyone know this bug?
How can I find the error/debug this/report the error?

System:

  • CPU/GPU: AMD Ryzen 7 PRO 4750GE with Radeon Graphics
  • Windowmanager: fvwm
1 Like

This sounds roughly like what happens when the window manager dies, but X is still working. I’d recommend looking into bugs related to your window manager.

1 Like

Anything of note listed in journalctl --user --boot once you trigger this? It should list just about anything going wrong in your user session.

Thanks; I’ll have a look at both.

Thanks, you were right – it was a window-manager problem. fvwm 2.6.9 (of NixOS 22.05) works, fvwm 2.7.0 (of NixOS 22.11) fails. So, after upgrading to 22.11 and pinning fvwm to NixOS 22.05, it works again. :smiley:

Solution details:

  • Add old channel
    nix-channel --add https://nixos.org/channels/nixos-22.05 nixos-2205

  • Pin fvwm in configuration.nix:

    nixpkgs.config = {
      ...
      # allow CHANNEL.PACKAGE for pinning
      packageOverrides = pkgs: {
        nixos2205 = import <nixos-2205> {
          config = config.nixpkgs.config;
        };
      };
    };
    
    services.xserver = {
      ...
      desktopManager.session = [ {
          manage = "desktop";
          name = "fvwm";
          # fvwm in 22.11 is buggy, so use old version
          start = ''
            ${pkgs.nixos2205.fvwm}/bin/fvwm &
            waitPID=$!
          '';
      }];
      ...
    };
    

Note that you’ll be running a lot of outdated libraries that way, as well as wasting a lot of disk space.

You’d probably be better off overriding the source with the old version, i.e.:

nixpkgs.overlays = [
  (prev: final: {
    fvwm = prev.fvwm.overrideAttrs (old: {
      version = "2.6.9";
      src = fetchFromGitHub {
        owner = "fvwmorg";
        repo = old.pname;
        rev = "2.6.9";
        hash = "sha256-sBVOrrl2WrZ2wWN/r1kDUtR+tPwXgDoSJDaxGeFkXJI=";
      };
    })
  })
];

Or you could debug the new version and find out why it’s broken. You should definitely at least raise an issue.