Thunderbird Crash after upgrade to 20.09

Hi all,

after upgrading NixOS to the 20.09 channel, Thunderbird no longer opens up and instead crashes with an illegible crash reporter dialog, as shown below:

Screenshot from 2020-11-09 19-28-27

I have already moved my ~/.thunderbird directory to ~/.thunderbird-old, to check if the crash has anything to do with my profile information. This did not resolve the issue; the crash report dialog looks identical afterwards.

What can I do to get Thunderbird working again? — This application is important to my workflow.

Edit: I suppose my /etc/nixos/configuration.nix would be useful to paste here?

# 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, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];

  # Allow non-free packages
  nixpkgs.config.allowUnfree = true;

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

  networking.hostName = "laptop"; # Define your hostname.
  # networking.wireless.enable = true;  # Network Manager manages the network

  # 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;
  networking.interfaces.eno1.useDHCP = true;
  networking.interfaces.wlo1.useDHCP = true;

  # Configure network proxy if necessary
  # networking.proxy.default = "http://user:password@proxy:port/";
  # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";

  # Select internationalisation properties.
  # i18n.defaultLocale = "en_US.UTF-8";
  # console = {
  #   font = "Lat2-Terminus16";
  #   keyMap = "us";
  # };

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

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
    wget curl git htop blender firefox traceroute autoconf coq filezilla
    gimp gcc gnumake hevea inkscape libreoffice lyx montserrat obs-studio
    ocaml opam openjdk shotcut steam texlive.combined.scheme-full texstudio
    zoom-us binutils-unwrapped
  ];

  # Some programs need SUID wrappers, can be configured further or are
  # started in user sessions.
  # programs.mtr.enable = true;
  # programs.gnupg.agent = {
  #   enable = true;
  #   enableSSHSupport = true;
  #   pinentryFlavor = "gnome3";
  # };

  programs.wireshark.enable = true;

  # List services that you want to enable:

  # Enable the OpenSSH daemon.
  # services.openssh.enable = true;

  # Open ports in the firewall.
  # networking.firewall.allowedTCPPorts = [ ... ];
  # networking.firewall.allowedUDPPorts = [ ... ];
  # Or disable the firewall altogether.
  # networking.firewall.enable = false;

  # Enable CUPS to print documents.
  services.printing.enable = true;

  # Enable sound.
  sound.enable = true;
  hardware.pulseaudio.enable = true;

  # Enable 32-bit opengl
  hardware.opengl.driSupport32Bit = true;
  hardware.pulseaudio.support32Bit = true;

  # Enable the X11 windowing system.
  services.xserver.enable = true;
  services.xserver.layout = "us";
  services.xserver.xkbOptions = "eurosign:e,numpad:microsoft";

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

  # Enable the desktop Environment.
  services.xserver.desktopManager.gnome3.enable = true;
  services.xserver.displayManager.gdm.enable = true;
  # services.xserver.desktopManager.gnome3.flashback.enableMetacity = true;

  # services.xserver.videoDrivers = [ "intel" "nvidia" ];

  # Define a user account. Don't forget to set a password with ‘passwd’.
  users.users.hdh = {
    isNormalUser = true;
    extraGroups = [ "wheel" "networkmanager" "video" "audio" "wireshark" ]; # Enable ‘sudo’ for the user.
  };

  # This value determines the NixOS release from which the default
  # settings for stateful data, like file locations and database versions
  # on your system were taken. It‘s perfectly fine and recommended to leave
  # this value at the release version of the first install of this system.
  # Before changing this value read the documentation for this option
  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
  system.stateVersion = "20.03"; # Did you read the comment?

}

Kind regards,

Hans

1 Like

Hmm looks like it can’t even render the error message. Can you run thunderbird from terminal and see if anything fishy printed there?

Well, now more readable and clearly an issue related to font configuration:

Fontconfig warning: "/etc/fonts/2.11/fonts.conf", line 5: unknown element "description"
Fontconfig error: "/etc/fonts/2.11/fonts.conf", line 5: invalid attribute 'domain'
Fontconfig warning: "/etc/fonts/conf.d/10-hinting-slight.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/20-unhint-small-vera.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/30-metric-aliases.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/40-nonlatin.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/45-generic.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/45-latin.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/49-sansserif.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/51-local.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/60-generic.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/60-latin.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/65-nonlatin.conf", line 4: unknown element "description"
Fontconfig error: Cannot load config file from /etc/fonts/2.11/fonts.conf
1605000910441	addons.xpi-utils	WARN	Disabling foreign installed add-on {e2fda1a4-762b-4020-b5ad-a41df1933103} in app-profile
ExceptionHandler::GenerateDump cloned child 20071
ExceptionHandler::SendContinueSignalToChild sent continue signal to child
ExceptionHandler::WaitForContinueSignal waiting for continue signal...
Fontconfig warning: "/etc/fonts/2.11/fonts.conf", line 5: unknown element "description"
Fontconfig error: "/etc/fonts/2.11/fonts.conf", line 5: invalid attribute 'domain'
Fontconfig warning: "/etc/fonts/conf.d/10-hinting-slight.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/20-unhint-small-vera.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/30-metric-aliases.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/40-nonlatin.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/45-generic.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/45-latin.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/49-sansserif.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/51-local.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/60-generic.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/60-latin.conf", line 4: unknown element "description"
Fontconfig warning: "/etc/fonts/conf.d/65-nonlatin.conf", line 4: unknown element "description"
Fontconfig error: Cannot load config file from /etc/fonts/2.11/fonts.conf

If you use channels, please ensure you have up to date channels for both configuration.nix and nix-env:

  • sudo nix-channel --update and nix-channel --update.

Programs from up to date channels will not try read configuration from /etc/fonts/2.11.

Unfortunately, the old program might have created fontconfig cache that would break other programs in a similar way. I recommend you also delete the cache if it exists:

  • rm -r ~/.cache/fontconfig

Sorry for the inconvenience.


For details about what is causing this, you can read fontconfig: 2.12.6 -> 2.13.92 by worldofpeace · Pull Request #73795 · NixOS/nixpkgs · GitHub and Applications linked against fontconfig 2.12 do not see fonts on nixos-unstable · Issue #94073 · NixOS/nixpkgs · GitHub.

1 Like

Thanks for the replies! The issue seems to be solved now. I am still learning to get a hang of it, so please bear with me.

I updated the channels both from root and my user account, cleared the ~/.cache directory, and did a nixos-rebuild. But this did not seem to resolve the issue. However, now I follow the link to which thunderbird points, and I find that it refers to version 68.12.0.

This seems to be not the latest version in the channel 20.09, which is 78.4.1 (at time of writing this). However, a separate package called thunderbird-68 is available. Now, I wonder, why is this happening?

Weirdly enough, thunderbird is not installed in the system profile (as can be seen from above’s pasted configuration.nix). But, when I query my nix environment, I get:

[hdh@laptop:~]$ nix-env -q
nmap-graphical-7.80
wireshark-qt-3.2.7

Weirdly so, thunderbird is not listed there… So I did a reinstall of thunderbird using nix-env -iA nixos.thunderbird in my user profile.

installing 'thunderbird-78.4.1'
these paths will be fetched (45.54 MiB download, 178.48 MiB unpacked):
  /nix/store/ww055hfkz3cc6qgv6l2bxfilzbl3l552-thunderbird-78.4.1
copying path '/nix/store/ww055hfkz3cc6qgv6l2bxfilzbl3l552-thunderbird-78.4.1' from 'https://cache.nixos.org'...
building '/nix/store/3nd72pqmfgncw9prqi4ipcp7qdyxpmb2-user-environment.drv'...
created 92 symlinks in user environment

and logged in and out from my Gnome session: and Thunderbird is working again!

What happened here? It seems I removed my user environment by running nix-env -e '*', cf. StackOverflow advice (1). But then forgot to add thunderbird back to the system environment. Then I added nixos channel 20.09, did a channel upgrade, and rebuilt. But then, why was thunderbird still accessible from my user’s path, while it was neither in the system profile, nor in nix-env -q?

Kind regards, and thanks for the help, Hans

GNOME caches the .desktop files so it might still have been using the old one.

Now, again moving Thunderbird to the systemPackages and removing it from my user profile, breaks the application as before. So I dived more into profiles, and found out that the root user is the owner of the default profile. Is it correct if I claim, for my packages to become visible in user space, the following precedence applies:

  1. The user’s environment (user profile)
  2. The default profile (user profile of the root user)
  3. The system packages

So, by clearing out my user environment by running nix-env -e '*', the next in line would be the default profile. This I confirmed by checking out the root profile and running nix-env -q as root. It revealed why the error was reintroduced: the default profile had installed thunderbird-68.12.0. So by running nix-env -e thunderbird under the root user removed the old package. Then in my user shell, checking what thunderbird it uses, reveals that it now picks up the newest version that is installed as a system package.

Thanks a lot!