[GH-ISSUE #6906] File dialog crashes (gdk-pixbuf2 + glycin + bwrap) #3412

Closed
opened 2026-05-05 09:58:23 -06:00 by gitea-mirror · 111 comments
Owner

Originally created by @myrslint on GitHub (Sep 21, 2025).
Original GitHub issue: https://github.com/netblue30/firejail/issues/6906

Description

Applications that use glycin 2.0.0 or later via gdk-pixbuf2 (examples: Firefox, Thunderbird, GIMP) crash

The library glycin provides a set of "safe" image format loaders to gdk-pixbuf2, another library which is widely used in GTK-based applications for loading images.

As of gdk-pixbuf2 2.44.1 the calls to glycin loaders are wrapped in bubblewrap (bwrap).

Steps to Reproduce

  1. Install Firefox 143.0.1 from Arch Linux repositories.
  2. Enable "testing" repositories of Arch Linux, which currently contain gdk-pixbuf2 2.44.1 in extra-testing.
  3. Update gdk-pixbuf2 to the "testing" version, soon to land in the main repositories.
  4. Run Firefox.
  5. From the File menu, select the "Open File..." item, or trigger the opening of a file chooser dialog by trying to save a downloaded file or upload a file via a form.
  6. Firefox crashes.

Thunderbird similarly crashes if one tries to open a file for any purpose. GIMP does not launch at all, if sandboxed with firejail..

Expected behavior

These applications work inside firejail sandbox as they did before.

Actual behavior

The mentioned applications crash.

Behavior without a profile

What changed calling LC_ALL=C firejail --noprofile /path/to/program in a
terminal?

Firefox, and the other applications, don't crash.

Additional context

This ties into the as-yet unsolved problem of running applications that try to use bwrap inside the firejail sandbox. The applications doing this used to be relatively few and perhaps considered of lower impact e.g., Foliate. Now, it is Firefox, via gdk-pixbuf2. Web browsers are probably the main type of application one would want to use inside a firejail sandbox.

Environment

  • Name/version/arch of the Linux kernel (uname -srm): Linux 6.16.8-arch1-1 x86_64
  • Name/version of the Linux distribution (e.g. "Ubuntu 20.04" or "Arch Linux"): Arch Linux
  • Name/version of the relevant program(s)/package(s) (e.g. "firefox 134.0-1,
    mesa 1:24.3.3-2"): Firefox 143.0.1
  • Version of Firejail (firejail --version): firejail-git from AUR, 0.9.76.r88.gd0c89ae81-1
  • If you use a development version of firejail, also the commit from which it
    was compiled (git rev-parse HEAD): gd0c89ae81

Checklist

  • The issues is caused by firejail (i.e. running the program by path (e.g. /usr/bin/vlc) "fixes" it).
  • I can reproduce the issue without custom modifications (e.g. globals.local).
  • The program has a profile. (If not, request one in https://github.com/netblue30/firejail/issues/1139)
  • The profile (and redirect profile if exists) hasn't already been fixed upstream.
  • I have performed a short search for similar issues (to avoid opening a duplicate).
    • I'm aware of browser-allow-drm yes/browser-disable-u2f no in firejail.config to allow DRM/U2F in browsers.
  • I used --profile=PROFILENAME to set the right profile. (Only relevant for AppImages)

Log

After adding the following lines to firefox.local:

whitelist /usr/share/glycin-loaders
noblacklist /usr/bin/bwrap

The relevant error message becomes:

Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Adwaita/scalable/status/image-missing.svg: Loader process exited early with status '1'Command:
 "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/user/.cache/fontconfig" "/home/user/.cache/fontconfig" "--ro-bind-try" "/home/user/.config/fontconfig/conf.d" "/home/user/.config/fontconfig/conf.d" "--ro-bind-try" "/home/user/.local/share/fonts" "/home/user/.local/share/fonts" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/user/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/user/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/user/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "213" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "212" (gdk-pixbuf-error-quark, 0)
Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Adwaita/scalable/status/image-missing.svg: Loader process exited early with status '1'Command:  "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/user/.cache/fontconfig" "/home/user/.cache/fontconfig" "--ro-bind-try" "/home/user/.config/fontconfig/conf.d" "/home/user/.config/fontconfig/conf.d" "--ro-bind-try" "/home/user/.local/share/fonts" "/home/user/.local/share/fonts" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/user/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/user/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/user/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "213" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "212" (gdk-pixbuf-error-quark, 0)
Originally created by @myrslint on GitHub (Sep 21, 2025). Original GitHub issue: https://github.com/netblue30/firejail/issues/6906 <!-- See the following links for help with formatting: https://guides.github.com/features/mastering-markdown/ https://docs.github.com/en/github/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax --> ### Description Applications that use glycin 2.0.0 or later via gdk-pixbuf2 (examples: Firefox, Thunderbird, GIMP) crash The library glycin provides a set of "safe" image format loaders to gdk-pixbuf2, another library which is widely used in GTK-based applications for loading images. As of gdk-pixbuf2 2.44.1 the calls to glycin loaders are wrapped in bubblewrap (bwrap). ### Steps to Reproduce 1. Install Firefox 143.0.1 from Arch Linux repositories. 2. Enable "testing" repositories of Arch Linux, which currently contain gdk-pixbuf2 2.44.1 in extra-testing. 3. Update gdk-pixbuf2 to the "testing" version, soon to land in the main repositories. 4. Run Firefox. 5. From the File menu, select the "Open File..." item, or trigger the opening of a file chooser dialog by trying to save a downloaded file or upload a file via a form. 6. Firefox crashes. Thunderbird similarly crashes if one tries to open a file for any purpose. GIMP does not launch at all, if sandboxed with firejail.. ### Expected behavior These applications work inside firejail sandbox as they did before. ### Actual behavior The mentioned applications crash. ### Behavior without a profile _What changed calling `LC_ALL=C firejail --noprofile /path/to/program` in a terminal?_ Firefox, and the other applications, don't crash. ### Additional context This ties into the as-yet unsolved problem of running applications that try to use bwrap inside the firejail sandbox. The applications doing this used to be relatively few and perhaps considered of lower impact e.g., Foliate. Now, it is Firefox, via gdk-pixbuf2. Web browsers are probably the main type of application one would want to use inside a firejail sandbox. ### Environment - Name/version/arch of the Linux kernel (`uname -srm`): `Linux 6.16.8-arch1-1 x86_64` - Name/version of the Linux distribution (e.g. "Ubuntu 20.04" or "Arch Linux"): Arch Linux - Name/version of the relevant program(s)/package(s) (e.g. "firefox 134.0-1, mesa 1:24.3.3-2"): Firefox 143.0.1 - Version of Firejail (`firejail --version`): firejail-git from AUR, `0.9.76.r88.gd0c89ae81-1` - If you use a development version of firejail, also the commit from which it was compiled (`git rev-parse HEAD`): gd0c89ae81 ### Checklist <!-- Note: Items are checked with an "x", like so: - [x] This is a checked item. --> - [x] The issues is caused by firejail (i.e. running the program by path (e.g. `/usr/bin/vlc`) "fixes" it). - [x] I can reproduce the issue without custom modifications (e.g. globals.local). - [x] The program has a profile. (If not, request one in `https://github.com/netblue30/firejail/issues/1139`) - [x] The profile (and redirect profile if exists) hasn't already been fixed [upstream](https://github.com/netblue30/firejail/tree/master/etc). - [x] I have performed a short search for similar issues (to avoid opening a duplicate). - [x] I'm aware of `browser-allow-drm yes`/`browser-disable-u2f no` in `firejail.config` to allow DRM/U2F in browsers. - [x] I used `--profile=PROFILENAME` to set the right profile. (Only relevant for AppImages) ### Log After adding the following lines to `firefox.local`: ``` whitelist /usr/share/glycin-loaders noblacklist /usr/bin/bwrap ``` The relevant error message becomes: ``` Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Adwaita/scalable/status/image-missing.svg: Loader process exited early with status '1'Command: "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/user/.cache/fontconfig" "/home/user/.cache/fontconfig" "--ro-bind-try" "/home/user/.config/fontconfig/conf.d" "/home/user/.config/fontconfig/conf.d" "--ro-bind-try" "/home/user/.local/share/fonts" "/home/user/.local/share/fonts" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/user/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/user/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/user/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "213" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "212" (gdk-pixbuf-error-quark, 0) Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Adwaita/scalable/status/image-missing.svg: Loader process exited early with status '1'Command: "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/user/.cache/fontconfig" "/home/user/.cache/fontconfig" "--ro-bind-try" "/home/user/.config/fontconfig/conf.d" "/home/user/.config/fontconfig/conf.d" "--ro-bind-try" "/home/user/.local/share/fonts" "/home/user/.local/share/fonts" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/user/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/user/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/user/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "213" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "212" (gdk-pixbuf-error-quark, 0) ```
gitea-mirror 2026-05-05 09:58:23 -06:00
Author
Owner

@myrslint commented on GitHub (Sep 21, 2025):

In the specific case of Firefox, adding the following to firefox.local prevents crashes:

whitelist /usr/share/glycin-loaders
noblacklist /usr/bin/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

ignore seccomp !chroot
seccomp !chroot,!mount,!pivot_root,!umount2
<!-- gh-comment-id:3316349578 --> @myrslint commented on GitHub (Sep 21, 2025): In the specific case of Firefox, adding the following to `firefox.local` prevents crashes: ``` whitelist /usr/share/glycin-loaders noblacklist /usr/bin/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ignore seccomp !chroot seccomp !chroot,!mount,!pivot_root,!umount2 ```
Author
Owner

@myrslint commented on GitHub (Sep 22, 2025):

I believe the noblacklist directives and change of seccomp filter are also necessary in each profile to ensure correct operation of applications that invoke bwrap this way. So far I have tested them with Firefox and Thunderbird.

<!-- gh-comment-id:3320865172 --> @myrslint commented on GitHub (Sep 22, 2025): I believe the `noblacklist` directives and change of seccomp filter are also necessary in each profile to ensure correct operation of applications that invoke bwrap this way. So far I have tested them with Firefox and Thunderbird.
Author
Owner

@kmk3 commented on GitHub (Sep 22, 2025):

@myrslint

Thanks for all the details.

I believe the noblacklist directives and change of seccomp filter are also
necessary in each profile to ensure correct operation of applications that
invoke bwrap this way. So far I have tested them with Firefox and
Thunderbird.

Yes, I created a PR just for the most straightforward change (#6907).

I'm not sure of a good way to fully fix this since it seems like the issue
could affect dozens of profiles.

Ideally there would be a way for bwrap to detect an existing sandbox (maybe
with an environment variable) and warn instead of erroring out.

Related:

<!-- gh-comment-id:3320902105 --> @kmk3 commented on GitHub (Sep 22, 2025): @myrslint Thanks for all the details. > I believe the `noblacklist` directives and change of seccomp filter are also > necessary in each profile to ensure correct operation of applications that > invoke bwrap this way. So far I have tested them with Firefox and > Thunderbird. Yes, I created a PR just for the most straightforward change (#6907). I'm not sure of a good way to fully fix this since it seems like the issue could affect dozens of profiles. Ideally there would be a way for bwrap to detect an existing sandbox (maybe with an environment variable) and warn instead of erroring out. Related: * #3647 * #6784
Author
Owner

@rusty-snake commented on GitHub (Sep 22, 2025):

This ties into the as-yet unsolved problem of running applications that try to use bwrap inside the firejail sandbox.

Which is #3647 [EDIT: @kmk3 was faster]

<!-- gh-comment-id:3320911240 --> @rusty-snake commented on GitHub (Sep 22, 2025): > This ties into the as-yet unsolved problem of running applications that try to use bwrap inside the firejail sandbox. Which is #3647 [EDIT: @kmk3 was faster] - STR Requirements debugged down at https://github.com/netblue30/firejail/issues/3647#issuecomment-769288256 - Cause debugged down at https://github.com/netblue30/firejail/issues/3647#issuecomment-1908690655, https://github.com/netblue30/firejail/issues/3647#issuecomment-1908698408, https://github.com/netblue30/firejail/issues/3647#issuecomment-1908749895 - PoC for what behaviour change is needed for a fix at https://github.com/netblue30/firejail/issues/3647#issuecomment-1908744772 - Yet open is to answer https://github.com/netblue30/firejail/issues/3647#issuecomment-2456689264 and to write and submit a patch.
Author
Owner

@rusty-snake commented on GitHub (Sep 22, 2025):

deally there would be a way for bwrap to detect an existing sandbox (maybe
with an environment variable) and warn instead of erroring out.

There is container=. However this would be the job of the call of bwrap (e.g. gdk/webkit/...) and not bwrap itself.

<!-- gh-comment-id:3320923164 --> @rusty-snake commented on GitHub (Sep 22, 2025): > deally there would be a way for bwrap to detect an existing sandbox (maybe with an environment variable) and warn instead of erroring out. There is `container=`. However this would be the job of the call of bwrap (e.g. gdk/webkit/...) and not bwrap itself.
Author
Owner

@myrslint commented on GitHub (Sep 22, 2025):

This ties into the as-yet unsolved problem of running applications that try to use bwrap inside the firejail sandbox.

Which is #3647 [EDIT: @kmk3 was faster]

* STR Requirements debugged down at [webkit2gtk-4.0 requires bwrap #3647 (comment)](https://github.com/netblue30/firejail/issues/3647#issuecomment-769288256)

* Cause debugged down at [webkit2gtk-4.0 requires bwrap #3647 (comment)](https://github.com/netblue30/firejail/issues/3647#issuecomment-1908690655), [webkit2gtk-4.0 requires bwrap #3647 (comment)](https://github.com/netblue30/firejail/issues/3647#issuecomment-1908698408), [webkit2gtk-4.0 requires bwrap #3647 (comment)](https://github.com/netblue30/firejail/issues/3647#issuecomment-1908749895)

* PoC for what behaviour change is needed for a fix at [webkit2gtk-4.0 requires bwrap #3647 (comment)](https://github.com/netblue30/firejail/issues/3647#issuecomment-1908744772)

* Yet open is to answer [webkit2gtk-4.0 requires bwrap #3647 (comment)](https://github.com/netblue30/firejail/issues/3647#issuecomment-2456689264) and to write and submit a patch.

At the moment, it seems Firefox works fine without patching firejail with the code changes listed at #3647. Only the additional directives in the profile are needed.

<!-- gh-comment-id:3320993147 --> @myrslint commented on GitHub (Sep 22, 2025): > > This ties into the as-yet unsolved problem of running applications that try to use bwrap inside the firejail sandbox. > > Which is [#3647](https://github.com/netblue30/firejail/issues/3647) [EDIT: [@kmk3](https://github.com/kmk3) was faster] > > * STR Requirements debugged down at [webkit2gtk-4.0 requires bwrap #3647 (comment)](https://github.com/netblue30/firejail/issues/3647#issuecomment-769288256) > > * Cause debugged down at [webkit2gtk-4.0 requires bwrap #3647 (comment)](https://github.com/netblue30/firejail/issues/3647#issuecomment-1908690655), [webkit2gtk-4.0 requires bwrap #3647 (comment)](https://github.com/netblue30/firejail/issues/3647#issuecomment-1908698408), [webkit2gtk-4.0 requires bwrap #3647 (comment)](https://github.com/netblue30/firejail/issues/3647#issuecomment-1908749895) > > * PoC for what behaviour change is needed for a fix at [webkit2gtk-4.0 requires bwrap #3647 (comment)](https://github.com/netblue30/firejail/issues/3647#issuecomment-1908744772) > > * Yet open is to answer [webkit2gtk-4.0 requires bwrap #3647 (comment)](https://github.com/netblue30/firejail/issues/3647#issuecomment-2456689264) and to write and submit a patch. At the moment, it seems Firefox works fine without patching firejail with the code changes listed at #3647. Only the additional directives in the profile are needed.
Author
Owner

@rusty-snake commented on GitHub (Sep 22, 2025):

May depend on the environment. On the otherhand the commandline in OP does not list --proc.

<!-- gh-comment-id:3321181415 --> @rusty-snake commented on GitHub (Sep 22, 2025): May depend on the environment. On the otherhand the commandline in OP does not list `--proc`.
Author
Owner

@myrslint commented on GitHub (Sep 22, 2025):

May depend on the environment. On the otherhand the commandline in OP does not list --proc.

Some hints as to what kind of minimum access is required for bwrap in the general case may be found at apparmor.d abstractions/common/bwrap.

<!-- gh-comment-id:3321199123 --> @myrslint commented on GitHub (Sep 22, 2025): > May depend on the environment. On the otherhand the commandline in OP does not list `--proc`. Some hints as to what kind of minimum access is required for bwrap in the general case may be found at [apparmor.d abstractions/common/bwrap](https://github.com/roddhjav/apparmor.d/blob/main/apparmor.d/abstractions/common/bwrap).
Author
Owner

@kmille commented on GitHub (Sep 24, 2025):

I have the same issue with signal-desktop and ristretto

<!-- gh-comment-id:3330104674 --> @kmille commented on GitHub (Sep 24, 2025): I have the same issue with signal-desktop and ristretto
Author
Owner

@elmodor commented on GitHub (Sep 27, 2025):

I have the same issue but noticed that some programs require only the whitelist, or the noblacklist, or both while other crash if they are present. I am talking about those:

whitelist /usr/share/glycin-loaders
noblacklist /usr/bin/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid
  1. Firefox: requires both whitelist and noblacklist in order for the download popup to work
  2. Steam: segfaults if either the whitelist or noblacklist are present. Both have to be absent for it to work
  3. Filezilla: requires the noblacklist to work. Shows an empty window if the whitelist is present, so it has to be absent

On Arch 6.16.8-arch3-1, glycin 2.0.0-5, gdk-pixbuf2 2.44.2-1, firejail 0.9.76

<!-- gh-comment-id:3341433281 --> @elmodor commented on GitHub (Sep 27, 2025): I have the same issue but noticed that some programs require only the whitelist, or the noblacklist, or both while other crash if they are present. I am talking about those: ``` whitelist /usr/share/glycin-loaders noblacklist /usr/bin/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ``` 1. Firefox: requires both `whitelist` and `noblacklist` in order for the download popup to work 2. Steam: segfaults if either the `whitelist` or `noblacklist` are present. Both have to be absent for it to work 3. Filezilla: requires the `noblacklist` to work. Shows an empty window if the `whitelist` is present, so it has to be absent On Arch 6.16.8-arch3-1, glycin 2.0.0-5, gdk-pixbuf2 2.44.2-1, firejail 0.9.76
Author
Owner

@dev-random42 commented on GitHub (Sep 28, 2025):

I tried the additions to firefox.local as in https://github.com/netblue30/firejail/issues/6906#issuecomment-3316349578, but Firefox still crashes. The close/maximize/minimize buttons dont show an icon.
Is there another workaround?

On Arch Linux 6.16.8-zen3-1-zen x86_64
gdk-pixbuf2 2.44.2-1
glycin 2.0.2-1

<!-- gh-comment-id:3344253608 --> @dev-random42 commented on GitHub (Sep 28, 2025): I tried the additions to firefox.local as in https://github.com/netblue30/firejail/issues/6906#issuecomment-3316349578, but Firefox still crashes. The close/maximize/minimize buttons dont show an icon. Is there another workaround? On Arch Linux 6.16.8-zen3-1-zen x86_64 gdk-pixbuf2 2.44.2-1 glycin 2.0.2-1
Author
Owner

@myrslint commented on GitHub (Sep 28, 2025):

I tried the additions to firefox.local as in #6906 (comment), but Firefox still crashes. The close/maximize/minimize buttons dont show an icon. Is there another workaround?

On Arch Linux 6.16.8-zen3-1-zen x86_64
gdk-pixbuf2 2.44.2-1
glycin 2.0.2-1

First of all, update your Arch Linux (pacman -Syu) and reboot. Your versions of gdk-pixbuf2 and glycin are quite a bit behind the latest. Both packages have received important updates, including Arch-specific patches, in the last few days. If you still get crashes after that you may be facing a new, different problem.

Bear in mind that glycin triggers a different bug, on machines with AMD GPUs (including iGPU), which has also been patched in these new versions of glycin shipped by Arch Linux. You can follow the discussion here: https://gitlab.freedesktop.org/drm/amd/-/issues/4568

Edit: The first paragraph is incorrect. Your versions are up to date.

<!-- gh-comment-id:3344263649 --> @myrslint commented on GitHub (Sep 28, 2025): > I tried the additions to firefox.local as in [#6906 (comment)](https://github.com/netblue30/firejail/issues/6906#issuecomment-3316349578), but Firefox still crashes. The close/maximize/minimize buttons dont show an icon. Is there another workaround? > > On Arch Linux 6.16.8-zen3-1-zen x86_64 gdk-pixbuf2 2.44.2-1 glycin 2.0.2-1 <del>First of all, update your Arch Linux (`pacman -Syu`) and reboot. Your versions of gdk-pixbuf2 and glycin are quite a bit behind the latest. Both packages have received important updates, including Arch-specific patches, in the last few days. If you still get crashes after that you may be facing a new, different problem.</del> Bear in mind that glycin triggers a different bug, on machines with AMD GPUs (including iGPU), which has also been patched in these new versions of glycin shipped by Arch Linux. You can follow the discussion here: https://gitlab.freedesktop.org/drm/amd/-/issues/4568 Edit: The first paragraph is incorrect. Your versions are up to date.
Author
Owner

@BlueMax commented on GitHub (Sep 28, 2025):

https://github.com/netblue30/firejail/issues/6906#issuecomment-3316349578 crashes here as well (log) on Intel cpu.

Linux 6.16.8-arch3-1
gdk-pixbuf2 2.44.2-1
glycin 2.0.2-1
<!-- gh-comment-id:3344345559 --> @BlueMax commented on GitHub (Sep 28, 2025): https://github.com/netblue30/firejail/issues/6906#issuecomment-3316349578 crashes here as well ([log](https://0x0.st/KB2W.txt/firejail-log.txt)) on Intel cpu. ``` Linux 6.16.8-arch3-1 gdk-pixbuf2 2.44.2-1 glycin 2.0.2-1 ```
Author
Owner

@myrslint commented on GitHub (Sep 28, 2025):

#6906 (comment) crashes here as well (log) on Intel cpu.

Linux 6.16.8-arch3-1
gdk-pixbuf2 2.44.2-1
glycin 2.0.2-1

With an Intel CPU and NVIDIA GPU, the other bug does not seem to be relevant. It might help to also post the full contents of your firefox.local. The error in the log you have posted looks like what you would get when Firefox is not allowed to execute bwrap.

<!-- gh-comment-id:3344359990 --> @myrslint commented on GitHub (Sep 28, 2025): > [#6906 (comment)](https://github.com/netblue30/firejail/issues/6906#issuecomment-3316349578) crashes here as well ([log](https://0x0.st/KB2W.txt/firejail-log.txt)) on Intel cpu. > > ``` > Linux 6.16.8-arch3-1 > gdk-pixbuf2 2.44.2-1 > glycin 2.0.2-1 > ``` With an Intel CPU and NVIDIA GPU, the other bug does not seem to be relevant. It might help to also post the full contents of your `firefox.local`. The error in the log you have posted looks like what you would get when Firefox is not allowed to execute bwrap.
Author
Owner

@myrslint commented on GitHub (Sep 28, 2025):

@dev-random42 and @BlueMax, this pkgrel 2 Arch Linux build of GTK3 is fresh off the presses, and it may solve your issue independent of firejail.

<!-- gh-comment-id:3344371838 --> @myrslint commented on GitHub (Sep 28, 2025): @dev-random42 and @BlueMax, [this pkgrel 2 Arch Linux build of GTK3](https://gitlab.archlinux.org/archlinux/packaging/packages/gtk3/-/commit/c58f3910b112d40ceeac3a41e2962d5cfa3ae05f) is fresh off the presses, and it **may** solve your issue independent of firejail.
Author
Owner

@BlueMax commented on GitHub (Sep 29, 2025):

Neither the new GTK3 nor the firefox.local helps. My firefox.local is exactly https://github.com/netblue30/firejail/issues/6906#issuecomment-3316349578. I've removed any other global.local changes and envvariables from firefox. Also tested on new/blank firefox profile.

<!-- gh-comment-id:3346383710 --> @BlueMax commented on GitHub (Sep 29, 2025): Neither the new `GTK3` nor the `firefox.local` helps. My `firefox.local` is exactly https://github.com/netblue30/firejail/issues/6906#issuecomment-3316349578. I've removed any other `global.local` changes and `env`variables from firefox. Also tested on new/blank firefox profile.
Author
Owner

@myrslint commented on GitHub (Sep 29, 2025):

Neither the new GTK3 nor the firefox.local helps. My firefox.local is exactly #6906 (comment). I've removed any other global.local changes and envvariables from firefox. Also tested on new/blank firefox profile.

Does Firefox run fine without firejail?

<!-- gh-comment-id:3346414409 --> @myrslint commented on GitHub (Sep 29, 2025): > Neither the new `GTK3` nor the `firefox.local` helps. My `firefox.local` is exactly [#6906 (comment)](https://github.com/netblue30/firejail/issues/6906#issuecomment-3316349578). I've removed any other `global.local` changes and `env`variables from firefox. Also tested on new/blank firefox profile. Does Firefox run fine without firejail?
Author
Owner

@BlueMax commented on GitHub (Sep 29, 2025):

Yes, works properly without firejail.

<!-- gh-comment-id:3346742311 --> @BlueMax commented on GitHub (Sep 29, 2025): Yes, works properly without firejail.
Author
Owner

@myrslint commented on GitHub (Sep 29, 2025):

Yes, works properly without firejail.

It is worth trying with firejail-git from AUR as well. I have that package installed, not the release version of official Arch repositories. There may be other profile changes since the last release which impact Firefox.

<!-- gh-comment-id:3347388576 --> @myrslint commented on GitHub (Sep 29, 2025): > Yes, works properly without firejail. It is worth trying with firejail-git from AUR as well. I have that package installed, not the release version of official Arch repositories. There may be other profile changes since the last release which impact Firefox.
Author
Owner

@BlueMax commented on GitHub (Sep 29, 2025):

firejail-git doesn't help either.

There are no errors in journalctl. There were some apparmor/mount denials but even after granting them with ignore seccomp !chroot,!mount there was no improvement.

Currently i'm using gdk-pixbuf2-noglycin as a workaround that doesn't need any firefox.local patches at all.

<!-- gh-comment-id:3348198774 --> @BlueMax commented on GitHub (Sep 29, 2025): `firejail-git` doesn't help either. There are no errors in journalctl. There were some `apparmor/mount` denials but even after granting them with `ignore seccomp !chroot,!mount` there was no improvement. Currently i'm using [gdk-pixbuf2-noglycin](https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin) as a workaround that doesn't need any `firefox.local` patches at all.
Author
Owner

@myrslint commented on GitHub (Sep 29, 2025):

firejail-git doesn't help either.

There are no errors in journalctl. There were some apparmor/mount denials but even after granting them with ignore seccomp !chroot,!mount there was no improvement.

Currently i'm using gdk-pixbuf2-noglycin as a workaround that doesn't need any firefox.local patches at all.

Yes, that AUR package turns the clock back to before the introduction of glycin into gdk-pixbuf2.

Do you also have AppArmor active (aa-enabled returns Yes)? Are any profiles loaded, other than the default one which does nothing, for Firefox?

<!-- gh-comment-id:3348348783 --> @myrslint commented on GitHub (Sep 29, 2025): > `firejail-git` doesn't help either. > > There are no errors in journalctl. There were some `apparmor/mount` denials but even after granting them with `ignore seccomp !chroot,!mount` there was no improvement. > > Currently i'm using [gdk-pixbuf2-noglycin](https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin) as a workaround that doesn't need any `firefox.local` patches at all. Yes, that AUR package turns the clock back to before the introduction of glycin into gdk-pixbuf2. Do you also have AppArmor active (`aa-enabled` returns `Yes`)? Are any profiles loaded, other than the default one which does nothing, for Firefox?
Author
Owner

@kinoegit commented on GitHub (Sep 29, 2025):

Currently i'm using gdk-pixbuf2-noglycin as a workaround that doesn't need any firefox.local patches at all.

I tried that replacement too but without success: apps kept crashing! Would you mind to tell me how you replaced gdk-pixbuf2 (e.g. marking --asexplicit then install gdk-pixbuf2-noglycin?) How does gdk-pixbuf2-noglycin load icon/images? Do I need another loader?

<!-- gh-comment-id:3348613806 --> @kinoegit commented on GitHub (Sep 29, 2025): > Currently i'm using [gdk-pixbuf2-noglycin](https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin) as a workaround that doesn't need any `firefox.local` patches at all. I tried that replacement too but without success: apps kept crashing! Would you mind to tell me how you replaced gdk-pixbuf2 (e.g. marking --asexplicit then install gdk-pixbuf2-noglycin?) How does gdk-pixbuf2-noglycin load icon/images? Do I need another loader?
Author
Owner

@lordkitsuna commented on GitHub (Sep 29, 2025):

So i also ran into this issue, and the fix from previous message was not working for me. I do use a hardened custom profile and after testing taking options out one at a time i found that it will still crash with #private-bin basename,bash,cat,dirname,expr,false,firefox,firefox-wayland,getenforce,ln,mkdir,pidof,restorecon,rm,rmdir,sed,sh,tclsh,true,uname option so i assume there is something it needs to call. perhaps bubblewrap itself i am not sure if i can figure it out ill update my post

<!-- gh-comment-id:3348891466 --> @lordkitsuna commented on GitHub (Sep 29, 2025): So i also ran into this issue, and the fix from previous message was not working for me. I do use a hardened custom profile and after testing taking options out one at a time i found that it will still crash with `#private-bin basename,bash,cat,dirname,expr,false,firefox,firefox-wayland,getenforce,ln,mkdir,pidof,restorecon,rm,rmdir,sed,sh,tclsh,true,uname ` option so i assume there is something it needs to call. perhaps bubblewrap itself i am not sure if i can figure it out ill update my post
Author
Owner

@BlueMax commented on GitHub (Sep 29, 2025):

(aa-enabled returns Yes)?

Yes

Are any profiles loaded, other than the default one which does nothing, for Firefox?

No.

$ sudo aa-status 
apparmor module is loaded.
1 profiles are loaded.
1 profiles are in enforce mode.
   firejail-default

Would you mind to tell me how you replaced gdk-pixbuf2

I just installed/replaced it via yay.

Edit: I've noticed though after restart that *.svg icons are missing on desktop and default XFCE icons are wrong/different (not my theme, delft darkest). Taskbar is not showing icons at all.

The price is too high. I will go back to glycin.

<!-- gh-comment-id:3348960143 --> @BlueMax commented on GitHub (Sep 29, 2025): > (`aa-enabled` returns `Yes`)? Yes > Are any profiles loaded, other than the default one which does nothing, for Firefox? No. ``` $ sudo aa-status apparmor module is loaded. 1 profiles are loaded. 1 profiles are in enforce mode. firejail-default ``` > Would you mind to tell me how you replaced gdk-pixbuf2 I just installed/replaced it via `yay`. Edit: I've noticed though after restart that *.svg icons are missing on desktop and default XFCE icons are wrong/different (not my theme, `delft darkest`). Taskbar is not showing icons at all. The price is too high. I will go back to glycin.
Author
Owner

@kinoegit commented on GitHub (Sep 30, 2025):

The price is too high. I will go back to glycin.

Keeping it as it is: firejail+ glycin <2.0.0 + gdk-pixbuf2 <2.44.1 doesn't come cheap as well -> missing icons in window frames and crashes when trying to download-- no low price at all.

<!-- gh-comment-id:3352718012 --> @kinoegit commented on GitHub (Sep 30, 2025): > The price is too high. I will go back to glycin. Keeping it as it is: firejail+ glycin <2.0.0 + gdk-pixbuf2 <2.44.1 doesn't come cheap as well -> missing icons in window frames and crashes when trying to download-- no low price at all.
Author
Owner

@myrslint commented on GitHub (Sep 30, 2025):

During this adaptation period, it may serve users of Arch Linux well to update often. There have been some repository changes, staged first in testing, related to this issue everyday for a few days now. There are legacy glycin packages, glycin1 (for GTK3) and glycin1-gtk4 (for GTK4), available in the official repositories now. These may solve your problems while the rough corners of the new versions being smoothed out.

<!-- gh-comment-id:3352883739 --> @myrslint commented on GitHub (Sep 30, 2025): During this adaptation period, it may serve users of Arch Linux well to update often. There have been some repository changes, staged first in testing, related to this issue everyday for a few days now. There are legacy glycin packages, `glycin1` (for GTK3) and `glycin1-gtk4` (for GTK4), available in the official repositories now. These may solve your problems while the rough corners of the new versions being smoothed out.
Author
Owner

@kinoegit commented on GitHub (Sep 30, 2025):

In Arch repositories:
glycin
glycin-gtk4
glycin1
glycin1-gtk4
among other things its a bit confusing for me because glycin doesn't conflict with glycin1. Installed both but problems persist: apps keep crashing, lack of icons etc

<!-- gh-comment-id:3353864823 --> @kinoegit commented on GitHub (Sep 30, 2025): In Arch repositories: glycin glycin-gtk4 glycin1 glycin1-gtk4 among other things its a bit confusing for me because glycin doesn't conflict with glycin1. Installed both but problems persist: apps keep crashing, lack of icons etc
Author
Owner

@BlueMax commented on GitHub (Sep 30, 2025):

Looks like apparmor is blocking bwrap completely.

This works here:

whitelist /usr/share/glycin-loaders
noblacklist /usr/bin/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

ignore seccomp !chroot
seccomp !chroot,!mount,!pivot_root,!umount2

ignore apparmor
ignore apparmor-replace

Below are some apparmor rules i logged/created with aa-logprof to see if i can fix it otherwise but there are too many (to be exceptions). I guess this should be handled by Firejail/apparmor instead. I'm wondering why this happens on my side only (and not for other people). Do i need an apparmor bwrap profile in /etc/apparmor.d/ or something? I've installed apparmor.d-git but it didn't help.

mount fstype=(tmpfs) options=(nodev, nosuid, rw) tmpfs -> /tmp/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/doc/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/glycin-loaders/,
mount options=(rbind, rw) /oldroot/usr/ -> /newroot/usr/,
mount options=(rbind, rw) /tmp/newroot/ -> /tmp/newroot/,
mount options=(rslave, rw, silent) -> /,
owner /newroot/usr/ mrwlk,
pivot_root oldroot=/tmp/oldroot/ /tmp/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/**/,
/newroot/{,**} rwklm,
[...]
<!-- gh-comment-id:3353881303 --> @BlueMax commented on GitHub (Sep 30, 2025): Looks like `apparmor` is blocking `bwrap` completely. This works here: ``` whitelist /usr/share/glycin-loaders noblacklist /usr/bin/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ignore seccomp !chroot seccomp !chroot,!mount,!pivot_root,!umount2 ignore apparmor ignore apparmor-replace ``` Below are some `apparmor` rules i logged/created with `aa-logprof` to see if i can fix it otherwise but there are too many (to be exceptions). I guess this should be handled by Firejail/apparmor instead. I'm wondering why this happens on my side only (and not for other people). Do i need an apparmor `bwrap` profile in `/etc/apparmor.d/` or something? I've installed `apparmor.d-git` but it didn't help. ``` mount fstype=(tmpfs) options=(nodev, nosuid, rw) tmpfs -> /tmp/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/doc/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/glycin-loaders/, mount options=(rbind, rw) /oldroot/usr/ -> /newroot/usr/, mount options=(rbind, rw) /tmp/newroot/ -> /tmp/newroot/, mount options=(rslave, rw, silent) -> /, owner /newroot/usr/ mrwlk, pivot_root oldroot=/tmp/oldroot/ /tmp/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/**/, /newroot/{,**} rwklm, [...] ```
Author
Owner

@myrslint commented on GitHub (Sep 30, 2025):

Looks like apparmor is blocking bwrap completely.

On a desktop-oriented installation of Arch Linux, if you are not using the profiles from apparmor.d project (available as an AUR package) and willing to deal with the complexities those bring, AppArmor is much more trouble than it's worth. The default profiles do next to nothing but can interfere with legitimate activity.

My advice is to disable AppArmor altogether. This involves not loading the LSM at boot if you have an lsm= kernel command line configured (e.g., in /etc/default/grub) and disabling apparmor.service.

Attending to the actually useful profiles in apparmor.d so that they work for your specific use cases is a lot of work. It should be a conscious decision you make and you should be prepared to carefully read the documentation and the provided profiles to make sense of things.

<!-- gh-comment-id:3353958591 --> @myrslint commented on GitHub (Sep 30, 2025): > Looks like `apparmor` is blocking `bwrap` completely. On a desktop-oriented installation of Arch Linux, if you are not using the profiles from [apparmor.d project](https://github.com/roddhjav/apparmor.d) (available as an AUR package) and willing to deal with the complexities those bring, AppArmor is much more trouble than it's worth. The default profiles do next to nothing but can interfere with legitimate activity. My advice is to disable AppArmor altogether. This involves not loading the LSM at boot if you have an `lsm=` kernel command line configured (e.g., in `/etc/default/grub`) and disabling `apparmor.service`. Attending to the actually useful profiles in apparmor.d so that they work for your specific use cases is a lot of work. It should be a conscious decision you make and you should be prepared to carefully read the documentation and the provided profiles to make sense of things.
Author
Owner

@BlueMax commented on GitHub (Sep 30, 2025):

I've just installed AppArmor for Firejail. I'm not loading any profiles or services (beside firejail-default). I thought Firejail would generate/replace it's own per-app specific AppArmor rules or at least being of benefit for Firefox.

Firefox itself seems covered by Firejail/AppArmor. Maybe additional Firejail/AppArmor/bwrap rules are currently WIP.

Edit:
firefox-common.profile explicitly sets apparmor so it must be handled by Firejail or removed. I will try to achieve a full bwrap ruleset for AppArmor. A dynamic per-profile AppArmor ruleset selection in Firejail would be useful.

<!-- gh-comment-id:3354131445 --> @BlueMax commented on GitHub (Sep 30, 2025): I've just installed AppArmor for Firejail. I'm not loading any profiles or services (beside firejail-default). I thought Firejail would generate/replace it's own per-app specific AppArmor rules or at least being of benefit for Firefox. Firefox itself seems covered by Firejail/AppArmor. Maybe additional Firejail/AppArmor/bwrap rules are currently WIP. Edit: `firefox-common.profile` explicitly sets `apparmor` so it must be handled by Firejail or removed. I will try to achieve a full bwrap ruleset for AppArmor. A dynamic per-profile AppArmor ruleset selection in Firejail would be useful.
Author
Owner

@gcb commented on GitHub (Oct 1, 2025):

i see the only place where this was addressed before was loupe profile 6c91074fc9

<!-- gh-comment-id:3356535388 --> @gcb commented on GitHub (Oct 1, 2025): i see the only place where this was addressed before was loupe profile https://github.com/netblue30/firejail/commit/6c91074fc90e774e3b40ad231bb178bea6ec5ae6
Author
Owner

@gcb commented on GitHub (Oct 1, 2025):

In the specific case of Firefox, adding the following to firefox.local prevents crashes:

whitelist /usr/share/glycin-loaders
noblacklist /usr/bin/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

ignore seccomp !chroot
seccomp !chroot,!mount,!pivot_root,!umount2

Thanks so much for investigating this whole issue!

The workaround to prevent crashes on file upload only, don't need seccomp changes, can be only this:

==> whitelist-usr-share-common.local <==

# https://github.com/netblue30/firejail/issues/6906
whitelist /usr/share/glycin-loaders

==> disable-common.local <==

# https://github.com/netblue30/firejail/issues/6906
noblacklist /usr/bin/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

(i don't use many gtk applications nowadays, but this seems to have solved the few we use at the office)

<!-- gh-comment-id:3356689022 --> @gcb commented on GitHub (Oct 1, 2025): > In the specific case of Firefox, adding the following to `firefox.local` prevents crashes: > > ``` > whitelist /usr/share/glycin-loaders > noblacklist /usr/bin/bwrap > noblacklist /proc/sys/kernel/overflowuid > noblacklist /proc/sys/kernel/overflowgid > > ignore seccomp !chroot > seccomp !chroot,!mount,!pivot_root,!umount2 > ``` Thanks so much for investigating this whole issue! The workaround to prevent crashes on file upload only, don't need seccomp changes, can be only this: ``` ==> whitelist-usr-share-common.local <== # https://github.com/netblue30/firejail/issues/6906 whitelist /usr/share/glycin-loaders ==> disable-common.local <== # https://github.com/netblue30/firejail/issues/6906 noblacklist /usr/bin/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ``` (i don't use many gtk applications nowadays, but this seems to have solved the few we use at the office)
Author
Owner

@kinoegit commented on GitHub (Oct 1, 2025):

During this adaptation period, it may serve users of Arch Linux well to update often. There have been some repository changes, staged first in testing, related to this issue everyday for a few days now. There are legacy glycin packages, glycin1 (for GTK3) and glycin1-gtk4 (for GTK4), available in the official repositories now. These may solve your problems while the rough corners of the new versions being smoothed out.

Could you give me a hint how this is solving the glycin problem? What am i missing here? I tried with both pkgs: legacy glycin1 and glycin without success: crashes are still occuring. Librewolf/ firefox is GTK3 isn't it?

==> whitelist-usr-share-common.local <==

# https://github.com/netblue30/firejail/issues/6906
whitelist /usr/share/glycin-loaders

==> disable-common.local <==

# https://github.com/netblue30/firejail/issues/6906
noblacklist /usr/bin/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

seems to make no difference here w/ librewolf

<!-- gh-comment-id:3357222564 --> @kinoegit commented on GitHub (Oct 1, 2025): > During this adaptation period, it may serve users of Arch Linux well to update often. There have been some repository changes, staged first in testing, related to this issue everyday for a few days now. There are legacy glycin packages, `glycin1` (for GTK3) and `glycin1-gtk4` (for GTK4), available in the official repositories now. These may solve your problems while the rough corners of the new versions being smoothed out. Could you give me a hint how this is solving the glycin problem? What am i missing here? I tried with both pkgs: legacy glycin1 and glycin without success: crashes are still occuring. Librewolf/ firefox is GTK3 isn't it? ``` ==> whitelist-usr-share-common.local <== # https://github.com/netblue30/firejail/issues/6906 whitelist /usr/share/glycin-loaders ==> disable-common.local <== # https://github.com/netblue30/firejail/issues/6906 noblacklist /usr/bin/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ``` seems to make no difference here w/ librewolf
Author
Owner

@myrslint commented on GitHub (Oct 1, 2025):

Could you give me a hint how this is solving the glycin problem? What am i missing here? I tried with both pkgs: legacy glycin1 and glycin without success: crashes are still occuring. Librewolf/ firefox is GTK3 isn't it?

Yes, they are GTK3 applications (with some caveats that are unimportant here). It seems glycin1 (the legacy package) is only required and/or used by Fractal (the Matrix protocol client). If you don't use Fractal, you can uninstall that.

Librewolf and Firefox use different Firejail profiles. If you created a firefox.local file under your user home directory's .config/firejail directory, it does not apply when Librewolf is being run under Firejail.

Do Firefox and Librewolf run fine without Firejail?

Do you use any access control and/or sandbox other than Firejail?

Is AppArmor disabled or still active, as per default, on your Arch Linux install?

What messages do you see during a regular launch and subsequent crash of Firefox from a terminal?

Someone may be able to provide more specific advice if you provide more details of the problem you are facing.

<!-- gh-comment-id:3357458936 --> @myrslint commented on GitHub (Oct 1, 2025): > Could you give me a hint how this is solving the glycin problem? What am i missing here? I tried with both pkgs: legacy glycin1 and glycin without success: crashes are still occuring. Librewolf/ firefox is GTK3 isn't it? Yes, they are GTK3 applications (with some caveats that are unimportant here). It seems glycin1 (the legacy package) is only required and/or used by Fractal (the Matrix protocol client). If you don't use Fractal, you can uninstall that. Librewolf and Firefox use different Firejail profiles. If you created a `firefox.local` file under your user home directory's `.config/firejail` directory, it does not apply when Librewolf is being run under Firejail. Do Firefox and Librewolf run fine without Firejail? Do you use any access control and/or sandbox other than Firejail? Is AppArmor disabled or still active, as per default, on your Arch Linux install? What messages do you see during a regular launch and subsequent crash of Firefox from a terminal? Someone may be able to provide more specific advice if you provide more details of the problem you are facing.
Author
Owner

@kinoegit commented on GitHub (Oct 1, 2025):

Librewolf and Firefox use different Firejail profiles. If you created a firefox.local file under your user home directory's .config/firejail directory, it does not apply when Librewolf is being run under Firejail.

--> my librewolf.local:

noblacklist ${RUNUSER}/app
whitelist ${RUNUSER}/app/org.keepassxc.KeePassXC
whitelist ${RUNUSER}/kpxc_server
whitelist ${RUNUSER}/org.keepassxc.KeePassXC.BrowserServer

EDIT: I also tried:

==> whitelist-usr-share-common.local <==

# https://github.com/netblue30/firejail/issues/6906
whitelist /usr/share/glycin-loaders

==> disable-common.local <==

# https://github.com/netblue30/firejail/issues/6906
noblacklist /usr/bin/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

Do Firefox and Librewolf run fine without Firejail?

--> Yes they do. Downloads and icons are fine.

Do you use any access control and/or sandbox other than Firejail?

--> Generally I do use bwrap on other apps

Is AppArmor disabled or still active, as per default, on your Arch Linux install?

--> AppArmor is disabled

What messages do you see during a regular launch and subsequent crash of Firefox from a terminal?

Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/breeze/status/16/image-missing.svg: No image loaders are configured. You might need to install a package like glycin-loaders.
Used config: Config {
    image_loader: {},
    image_editor: {},
} (gdk-pixbuf-error-quark, 0)
Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/breeze/status/16/image-missing.svg: No image loaders are configured. You might need to install a package like glycin-loaders. Used config: Config {     image_loader: {},     image_editor: {}, } (gdk-pixbuf-error-quark, 0)
Redirecting call to abort() to mozalloc_abort

ExceptionHandler::GenerateDump attempting to generate:/home/kinoe/.mozilla/firefox/nm4zko7k.default-release/minidumps/7376642f-a9fa-1216-7a29-1b52e2737314.dmp
ExceptionHandler::GenerateDump cloned child ExceptionHandler::WaitForContinueSignal waiting for continue signal...
1005
ExceptionHandler::SendContinueSignalToChild sent continue signal to child
ExceptionHandler::GenerateDump minidump generation failed
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.

(process:1006): Gtk-CRITICAL **: 23:30:07.445: gtk_window_set_default_icon: assertion 'GDK_IS_PIXBUF (icon)' failed

Thanks a lot for helping!

<!-- gh-comment-id:3358230558 --> @kinoegit commented on GitHub (Oct 1, 2025): > Librewolf and Firefox use different Firejail profiles. If you created a firefox.local file under your user home directory's .config/firejail directory, it does not apply when Librewolf is being run under Firejail. --> my librewolf.local: ``` noblacklist ${RUNUSER}/app whitelist ${RUNUSER}/app/org.keepassxc.KeePassXC whitelist ${RUNUSER}/kpxc_server whitelist ${RUNUSER}/org.keepassxc.KeePassXC.BrowserServer ``` EDIT: I also tried: ``` ==> whitelist-usr-share-common.local <== # https://github.com/netblue30/firejail/issues/6906 whitelist /usr/share/glycin-loaders ==> disable-common.local <== # https://github.com/netblue30/firejail/issues/6906 noblacklist /usr/bin/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ``` > Do Firefox and Librewolf run fine without Firejail? --> Yes they do. Downloads and icons are fine. > Do you use any access control and/or sandbox other than Firejail? --> Generally I do use **bwrap** on other apps > Is AppArmor disabled or still active, as per default, on your Arch Linux install? --> AppArmor is **disabled** > What messages do you see during a regular launch and subsequent crash of Firefox from a terminal? ``` Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/breeze/status/16/image-missing.svg: No image loaders are configured. You might need to install a package like glycin-loaders. Used config: Config { image_loader: {}, image_editor: {}, } (gdk-pixbuf-error-quark, 0) Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/breeze/status/16/image-missing.svg: No image loaders are configured. You might need to install a package like glycin-loaders. Used config: Config { image_loader: {}, image_editor: {}, } (gdk-pixbuf-error-quark, 0) Redirecting call to abort() to mozalloc_abort ExceptionHandler::GenerateDump attempting to generate:/home/kinoe/.mozilla/firefox/nm4zko7k.default-release/minidumps/7376642f-a9fa-1216-7a29-1b52e2737314.dmp ExceptionHandler::GenerateDump cloned child ExceptionHandler::WaitForContinueSignal waiting for continue signal... 1005 ExceptionHandler::SendContinueSignalToChild sent continue signal to child ExceptionHandler::GenerateDump minidump generation failed Exiting due to channel error. Exiting due to channel error. Exiting due to channel error. Exiting due to channel error. Exiting due to channel error. Exiting due to channel error. Exiting due to channel error. (process:1006): Gtk-CRITICAL **: 23:30:07.445: gtk_window_set_default_icon: assertion 'GDK_IS_PIXBUF (icon)' failed ``` Thanks a lot for helping!
Author
Owner

@BlueMax commented on GitHub (Oct 2, 2025):

For reference:
AppArmor companion ruleset

sudo bash -c 'cat <<EOF>> /etc/apparmor.d/local/firejail-default

# Firefox/bwrap
pivot_root oldroot=/tmp/oldroot/ /tmp/,
pivot_root oldroot=/newroot/ /newroot/,
mount fstype=(devpts) options=(noexec, nosuid, rw) devpts -> /newroot/dev/pts/,
mount fstype=(tmpfs) options=(nodev, nosuid, rw) tmpfs -> /newroot/dev/,
mount fstype=(tmpfs) options=(nodev, nosuid, rw) tmpfs -> /newroot/tmp-home/,
mount fstype=(tmpfs) options=(nodev, nosuid, rw) tmpfs -> /newroot/tmp-run/,
mount fstype=(tmpfs) options=(nodev, nosuid, rw) tmpfs -> /tmp/,
mount options=(bind, nodev, noexec, nosuid, relatime, remount, ro, silent) -> /newroot/@{HOME}/.cache/fontconfig/,
mount options=(bind, nodev, noexec, nosuid, relatime, remount, ro, silent) -> /newroot/@{HOME}/.config/fontconfig/conf.d/,
mount options=(bind, nodev, noexec, nosuid, relatime, remount, ro, silent) -> /newroot/@{HOME}/.fonts/,
mount options=(bind, nodev, noexec, nosuid, relatime, remount, ro, silent) -> /newroot/@{HOME}/.local/share/fonts/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/bin/true,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/X11/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/alsa/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/applications/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/ca-certificates/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/doc/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/drirc.d/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/egl/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/enchant-2/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/file/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/fontconfig/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/fonts/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gir-1.0/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/glib-2.0/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/glvnd/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/glycin-loaders/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gtk-2.0/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gtk-3.0/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gtk-4.0/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gtk-doc/html/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gtk-engines/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gtksourceview-4/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/hunspell/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/hwdata/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/icons/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/icu/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/libdrm/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/libthai/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/locale/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/mime/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/misc/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/myspell/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/p11-kit/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/pipewire/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/pixmaps/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/qt/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/qt5ct/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/qt6/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/qt6ct/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/sounds/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/terminfo/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/texmf/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/themes/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/vulkan/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/xkeyboard-config-2/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/xml/,
mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/zoneinfo/,
mount options=(bind, nodev, nosuid, remount, ro, silent) -> /newroot/etc/fonts/conf.d/,
mount options=(bind, nodev, nosuid, remount, ro, silent) -> /newroot/etc/fonts/fonts.conf,
mount options=(bind, nodev, nosuid, remount, ro, silent) -> /newroot/etc/ld.so.cache,
mount options=(rbind, rw) /oldroot/dev/full -> /newroot/dev/full,
mount options=(rbind, rw) /oldroot/dev/null -> /newroot/dev/null,
mount options=(rbind, rw) /oldroot/dev/random -> /newroot/dev/random,
mount options=(rbind, rw) /oldroot/dev/tty -> /newroot/dev/tty,
mount options=(rbind, rw) /oldroot/dev/urandom -> /newroot/dev/urandom,
mount options=(rbind, rw) /oldroot/dev/zero -> /newroot/dev/zero,
mount options=(rbind, rw) /oldroot/etc/fonts/conf.d/ -> /newroot/etc/fonts/conf.d/,
mount options=(rbind, rw) /oldroot/etc/fonts/fonts.conf -> /newroot/etc/fonts/fonts.conf,
mount options=(rbind, rw) /oldroot/etc/ld.so.cache -> /newroot/etc/ld.so.cache,
mount options=(rbind, rw) /oldroot/@{HOME}/.cache/fontconfig/ -> /newroot/@{HOME}/.cache/fontconfig/,
mount options=(rbind, rw) /oldroot/@{HOME}/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg/ -> /newroot/@{HOME}/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg/,
mount options=(rbind, rw) /oldroot/@{HOME}/.config/fontconfig/conf.d/ -> /newroot/@{HOME}/.config/fontconfig/conf.d/,
mount options=(rbind, rw) /oldroot/@{HOME}/.fonts/ -> /newroot/@{HOME}/.fonts/,
mount options=(rbind, rw) /oldroot/@{HOME}/.local/share/fonts/ -> /newroot/@{HOME}/.local/share/fonts/,
mount options=(rbind, rw) /oldroot/usr/ -> /newroot/usr/,
mount options=(rbind, rw) /oldroot/usr/bin/true -> /newroot/usr/bin/true,
mount options=(rbind, rw) /oldroot/var/cache/fontconfig/ -> /newroot/var/cache/fontconfig/,
mount options=(rbind, rw) /tmp/newroot/ -> /tmp/newroot/,
mount options=(rprivate, rw, silent) -> /oldroot/,
mount options=(rslave, rw, silent) -> /,
umount /,
umount /oldroot/,

owner /newroot/dev/ w,
owner /newroot/dev/core w,
owner /newroot/dev/fd w,
owner /newroot/dev/full w,
owner /newroot/dev/null w,
owner /newroot/dev/ptmx w,
owner /newroot/dev/pts/ w,
owner /newroot/dev/random w,
owner /newroot/dev/shm/ w,
owner /newroot/dev/stderr w,
owner /newroot/dev/stdin w,
owner /newroot/dev/stdout w,
owner /newroot/dev/tty w,
owner /newroot/dev/urandom w,
owner /newroot/dev/zero w,
owner /newroot/etc/ w,
owner /newroot/etc/fonts/ w,
owner /newroot/etc/fonts/** w,
owner /newroot/etc/ld.so.cache w,
owner /newroot/home/ w,
owner /newroot/@{HOME}/ w,
owner /newroot/@{HOME}/.cache/ w,
owner /newroot/@{HOME}/.cache/fontconfig/ w,
owner /newroot/@{HOME}/.cache/glycin/ w,
owner /newroot/@{HOME}/.cache/glycin/usr/ w,
owner /newroot/@{HOME}/.cache/glycin/usr/lib/ w,
owner /newroot/@{HOME}/.cache/glycin/usr/lib/glycin-loaders/ w,
owner /newroot/@{HOME}/.cache/glycin/usr/lib/glycin-loaders/2+/ w,
owner /newroot/@{HOME}/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg/ w,
owner /newroot/@{HOME}/.config/ w,
owner /newroot/@{HOME}/.config/fontconfig/ w,
owner /newroot/@{HOME}/.config/fontconfig/conf.d/ w,
owner /newroot/@{HOME}/.fonts/ w,
owner /newroot/@{HOME}/.local/ w,
owner /newroot/@{HOME}/.local/share/ w,
owner /newroot/@{HOME}/.local/share/fonts/ w,
owner /newroot/lib w,
owner /newroot/lib64 w,
owner /newroot/tmp-home/ w,
owner /newroot/tmp-run/ w,
owner /newroot/usr/ w,
owner /newroot/var/ w,
owner /newroot/var/cache/ w,
owner /newroot/var/cache/fontconfig/ w,
EOF'
<!-- gh-comment-id:3361615648 --> @BlueMax commented on GitHub (Oct 2, 2025): For reference: AppArmor companion ruleset ``` sudo bash -c 'cat <<EOF>> /etc/apparmor.d/local/firejail-default # Firefox/bwrap pivot_root oldroot=/tmp/oldroot/ /tmp/, pivot_root oldroot=/newroot/ /newroot/, mount fstype=(devpts) options=(noexec, nosuid, rw) devpts -> /newroot/dev/pts/, mount fstype=(tmpfs) options=(nodev, nosuid, rw) tmpfs -> /newroot/dev/, mount fstype=(tmpfs) options=(nodev, nosuid, rw) tmpfs -> /newroot/tmp-home/, mount fstype=(tmpfs) options=(nodev, nosuid, rw) tmpfs -> /newroot/tmp-run/, mount fstype=(tmpfs) options=(nodev, nosuid, rw) tmpfs -> /tmp/, mount options=(bind, nodev, noexec, nosuid, relatime, remount, ro, silent) -> /newroot/@{HOME}/.cache/fontconfig/, mount options=(bind, nodev, noexec, nosuid, relatime, remount, ro, silent) -> /newroot/@{HOME}/.config/fontconfig/conf.d/, mount options=(bind, nodev, noexec, nosuid, relatime, remount, ro, silent) -> /newroot/@{HOME}/.fonts/, mount options=(bind, nodev, noexec, nosuid, relatime, remount, ro, silent) -> /newroot/@{HOME}/.local/share/fonts/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/bin/true, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/X11/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/alsa/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/applications/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/ca-certificates/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/doc/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/drirc.d/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/egl/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/enchant-2/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/file/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/fontconfig/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/fonts/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gir-1.0/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/glib-2.0/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/glvnd/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/glycin-loaders/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gtk-2.0/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gtk-3.0/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gtk-4.0/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gtk-doc/html/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gtk-engines/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/gtksourceview-4/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/hunspell/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/hwdata/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/icons/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/icu/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/libdrm/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/libthai/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/locale/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/mime/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/misc/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/myspell/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/p11-kit/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/pipewire/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/pixmaps/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/qt/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/qt5ct/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/qt6/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/qt6ct/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/sounds/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/terminfo/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/texmf/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/themes/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/vulkan/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/xkeyboard-config-2/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/xml/, mount options=(bind, nodev, nosuid, relatime, remount, ro, silent) -> /newroot/usr/share/zoneinfo/, mount options=(bind, nodev, nosuid, remount, ro, silent) -> /newroot/etc/fonts/conf.d/, mount options=(bind, nodev, nosuid, remount, ro, silent) -> /newroot/etc/fonts/fonts.conf, mount options=(bind, nodev, nosuid, remount, ro, silent) -> /newroot/etc/ld.so.cache, mount options=(rbind, rw) /oldroot/dev/full -> /newroot/dev/full, mount options=(rbind, rw) /oldroot/dev/null -> /newroot/dev/null, mount options=(rbind, rw) /oldroot/dev/random -> /newroot/dev/random, mount options=(rbind, rw) /oldroot/dev/tty -> /newroot/dev/tty, mount options=(rbind, rw) /oldroot/dev/urandom -> /newroot/dev/urandom, mount options=(rbind, rw) /oldroot/dev/zero -> /newroot/dev/zero, mount options=(rbind, rw) /oldroot/etc/fonts/conf.d/ -> /newroot/etc/fonts/conf.d/, mount options=(rbind, rw) /oldroot/etc/fonts/fonts.conf -> /newroot/etc/fonts/fonts.conf, mount options=(rbind, rw) /oldroot/etc/ld.so.cache -> /newroot/etc/ld.so.cache, mount options=(rbind, rw) /oldroot/@{HOME}/.cache/fontconfig/ -> /newroot/@{HOME}/.cache/fontconfig/, mount options=(rbind, rw) /oldroot/@{HOME}/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg/ -> /newroot/@{HOME}/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg/, mount options=(rbind, rw) /oldroot/@{HOME}/.config/fontconfig/conf.d/ -> /newroot/@{HOME}/.config/fontconfig/conf.d/, mount options=(rbind, rw) /oldroot/@{HOME}/.fonts/ -> /newroot/@{HOME}/.fonts/, mount options=(rbind, rw) /oldroot/@{HOME}/.local/share/fonts/ -> /newroot/@{HOME}/.local/share/fonts/, mount options=(rbind, rw) /oldroot/usr/ -> /newroot/usr/, mount options=(rbind, rw) /oldroot/usr/bin/true -> /newroot/usr/bin/true, mount options=(rbind, rw) /oldroot/var/cache/fontconfig/ -> /newroot/var/cache/fontconfig/, mount options=(rbind, rw) /tmp/newroot/ -> /tmp/newroot/, mount options=(rprivate, rw, silent) -> /oldroot/, mount options=(rslave, rw, silent) -> /, umount /, umount /oldroot/, owner /newroot/dev/ w, owner /newroot/dev/core w, owner /newroot/dev/fd w, owner /newroot/dev/full w, owner /newroot/dev/null w, owner /newroot/dev/ptmx w, owner /newroot/dev/pts/ w, owner /newroot/dev/random w, owner /newroot/dev/shm/ w, owner /newroot/dev/stderr w, owner /newroot/dev/stdin w, owner /newroot/dev/stdout w, owner /newroot/dev/tty w, owner /newroot/dev/urandom w, owner /newroot/dev/zero w, owner /newroot/etc/ w, owner /newroot/etc/fonts/ w, owner /newroot/etc/fonts/** w, owner /newroot/etc/ld.so.cache w, owner /newroot/home/ w, owner /newroot/@{HOME}/ w, owner /newroot/@{HOME}/.cache/ w, owner /newroot/@{HOME}/.cache/fontconfig/ w, owner /newroot/@{HOME}/.cache/glycin/ w, owner /newroot/@{HOME}/.cache/glycin/usr/ w, owner /newroot/@{HOME}/.cache/glycin/usr/lib/ w, owner /newroot/@{HOME}/.cache/glycin/usr/lib/glycin-loaders/ w, owner /newroot/@{HOME}/.cache/glycin/usr/lib/glycin-loaders/2+/ w, owner /newroot/@{HOME}/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg/ w, owner /newroot/@{HOME}/.config/ w, owner /newroot/@{HOME}/.config/fontconfig/ w, owner /newroot/@{HOME}/.config/fontconfig/conf.d/ w, owner /newroot/@{HOME}/.fonts/ w, owner /newroot/@{HOME}/.local/ w, owner /newroot/@{HOME}/.local/share/ w, owner /newroot/@{HOME}/.local/share/fonts/ w, owner /newroot/lib w, owner /newroot/lib64 w, owner /newroot/tmp-home/ w, owner /newroot/tmp-run/ w, owner /newroot/usr/ w, owner /newroot/var/ w, owner /newroot/var/cache/ w, owner /newroot/var/cache/fontconfig/ w, EOF' ```
Author
Owner

@BlueMax commented on GitHub (Oct 2, 2025):

@kinoegit:
Do not split the cmds (yet). Paste https://github.com/netblue30/firejail/issues/6906#issuecomment-3316349578 exactly into librewolf.local and post the full terminal output. Do not omit the seccomp lines.

<!-- gh-comment-id:3363396114 --> @BlueMax commented on GitHub (Oct 2, 2025): @kinoegit: Do not split the cmds (yet). Paste https://github.com/netblue30/firejail/issues/6906#issuecomment-3316349578 exactly into `librewolf.local` and post the full terminal output. Do not omit the seccomp lines.
Author
Owner

@kinoegit commented on GitHub (Oct 3, 2025):

@BlueMax many thanks! that fixed it. Don't know why I omitted the seccomp lines before...

<!-- gh-comment-id:3364358802 --> @kinoegit commented on GitHub (Oct 3, 2025): @BlueMax many thanks! that fixed it. Don't know why I omitted the seccomp lines before...
Author
Owner

@kinoegit commented on GitHub (Oct 4, 2025):

Fix for firejailed Librewolf (FF fork) is not the solution for Brave (Chromium fork). Though firejailed brave does not crash when trying to download anything (e.g. right click- service menu- save target under... /save image) but it does nothing- not even a complaint in the logs, nor in journalctl nor in firejail --debug!
brave.local:

whitelist ${HOME}/Downloads/Firejail

# brave uses gpg for built-in password manager, since its deactivated access to ${HOME}/.gnupg isn't necessary
ignore noblacklist ${HOME}/.gnupg

noblacklist ${RUNUSER}/app
whitelist ${RUNUSER}/app/org.keepassxc.KeePassXC
whitelist ${RUNUSER}/kpxc_server
whitelist ${RUNUSER}/org.keepassxc.KeePassXC.BrowserServer

include chromium-common-hardened.inc.profile

whitelist /usr/share/glycin-loaders
noblacklist /usr/bin/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

ignore seccomp !chroot
seccomp !chroot,!mount,!pivot_root,!umount2

Ctl+c images and paste them e.g. in a LO document is possible with or without the last 6 lines

<!-- gh-comment-id:3367912729 --> @kinoegit commented on GitHub (Oct 4, 2025): Fix for firejailed Librewolf (FF fork) is not the solution for Brave (Chromium fork). Though firejailed brave does not crash when trying to download anything (e.g. right click- service menu- save target under... /save image) but it does nothing- not even a complaint in the logs, nor in journalctl nor in firejail --debug! brave.local: ``` whitelist ${HOME}/Downloads/Firejail # brave uses gpg for built-in password manager, since its deactivated access to ${HOME}/.gnupg isn't necessary ignore noblacklist ${HOME}/.gnupg noblacklist ${RUNUSER}/app whitelist ${RUNUSER}/app/org.keepassxc.KeePassXC whitelist ${RUNUSER}/kpxc_server whitelist ${RUNUSER}/org.keepassxc.KeePassXC.BrowserServer include chromium-common-hardened.inc.profile whitelist /usr/share/glycin-loaders noblacklist /usr/bin/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ignore seccomp !chroot seccomp !chroot,!mount,!pivot_root,!umount2 ``` Ctl+c images and paste them e.g. in a LO document is possible with or without the last 6 lines
Author
Owner

@merdely commented on GitHub (Oct 4, 2025):

For me on Arch Linux, "noblacklist /usr/bin/bwrap" did not work, but "noblacklist ${PATH}/bwrap" does. The rest of the suggested additions to firefox.local work unchanged.

<!-- gh-comment-id:3368499696 --> @merdely commented on GitHub (Oct 4, 2025): For me on Arch Linux, "noblacklist /usr/bin/bwrap" did not work, but "noblacklist ${PATH}/bwrap" does. The rest of the suggested additions to firefox.local work unchanged.
Author
Owner

@kinoegit commented on GitHub (Oct 4, 2025):

Thanks for hinting, but it didn't change braves faulty behaviour.

<!-- gh-comment-id:3368511745 --> @kinoegit commented on GitHub (Oct 4, 2025): Thanks for hinting, but it didn't change braves faulty behaviour.
Author
Owner

@kinoegit commented on GitHub (Oct 4, 2025):

Fix for firejailed Librewolf (FF fork) is not the solution for Brave (Chromium fork). Though firejailed brave does not crash when trying to download anything (e.g. right click- service menu- save target under... /save image) but it does nothing- not even a complaint in the logs, nor in journalctl nor in firejail --debug! brave.local:

The same applies to Mullvad-browser but with the following, well known log entry:

Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load .......

despite the mullvad-browser.local:

whitelist /usr/share/glycin-loaders
noblacklist ${PATH}/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

ignore seccomp !chroot
seccomp !chroot,!mount,!pivot_root,!umount2
<!-- gh-comment-id:3368558800 --> @kinoegit commented on GitHub (Oct 4, 2025): > Fix for firejailed Librewolf (FF fork) is not the solution for Brave (Chromium fork). Though firejailed brave does not crash when trying to download anything (e.g. right click- service menu- save target under... /save image) but it does nothing- not even a complaint in the logs, nor in journalctl nor in firejail --debug! brave.local: The same applies to Mullvad-browser but with the following, well known log entry: `Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load .......` despite the mullvad-browser.local: ``` whitelist /usr/share/glycin-loaders noblacklist ${PATH}/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ignore seccomp !chroot seccomp !chroot,!mount,!pivot_root,!umount2 ```
Author
Owner

@Daystar1998 commented on GitHub (Oct 6, 2025):

Profiles using private-bin will need to add bwrap to the list

<!-- gh-comment-id:3369536256 --> @Daystar1998 commented on GitHub (Oct 6, 2025): Profiles using private-bin will need to add bwrap to the list
Author
Owner

@rsramkis commented on GitHub (Oct 6, 2025):

I've been trying to launch the Arch Linux native (non flatpak) version of Firefox 143.0.4 and it is still crashing with the following error:

❯ firefox
Reading profile /etc/firejail/firefox.profile
Reading profile /home/rsruser/.config/firejail/firefox.local
Reading profile /etc/firejail/firefox-common.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-devel.inc
Reading profile /etc/firejail/disable-exec.inc
Reading profile /etc/firejail/disable-interpreters.inc
Reading profile /etc/firejail/disable-proc.inc
Reading profile /etc/firejail/disable-programs.inc
Reading profile /etc/firejail/whitelist-common.inc
Reading profile /etc/firejail/whitelist-run-common.inc
Reading profile /etc/firejail/whitelist-runuser-common.inc
Reading profile /etc/firejail/whitelist-usr-share-common.inc
Reading profile /etc/firejail/whitelist-var-common.inc
firejail version 0.9.76

Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Parent pid 2719, child pid 2723
Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set.
Private /etc installed in 209.48 ms
Warning: /sbin directory link was not blacklisted
Warning: /usr/sbin directory link was not blacklisted
Base filesystem installed in 175.92 ms
Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior.
Child process initialized in 497.28 ms
[Parent 40, Main Thread] WARNING: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.: 'glib warning', file /usr/src/debug/firefox/firefox-143.0.4/toolkit/xre/nsSigHandlers.cpp:201

(firefox:40): Gtk-WARNING **: 13:36:06.951: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
**
Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command:
 "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "64" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "63" (gdk-pixbuf-error-quark, 0)
Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command:  "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "64" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "63" (gdk-pixbuf-error-quark, 0)
Redirecting call to abort() to mozalloc_abort

ExceptionHandler::GenerateDump attempting to generate:/home/rsruser/.mozilla/firefox/99dtdpr6.default-release/minidumps/7a061a8c-0549-6088-3f7d-310a1f807b17.dmp
ExceptionHandler::GenerateDump cloned child 120
ExceptionHandler::SendContinueSignalToChild sent continue signal to child
ExceptionHandler::WaitForContinueSignal waiting for continue signal...
ExceptionHandler::GenerateDump minidump generation failed

(process:121): Gtk-CRITICAL **: 13:36:07.059: gtk_window_set_default_icon: assertion 'GDK_IS_PIXBUF (icon)' failed

(crashreporter:121): Gtk-WARNING **: 13:36:07.140: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
**
Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command:
 "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "22" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "21" (gdk-pixbuf-error-quark, 0)
Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command:  "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "22" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "21" (gdk-pixbuf-error-quark, 0)

Parent is shutting down, bye...

I am using these settings in my firefox.local file:

whitelist /usr/share/glycin-loaders
noblacklist ${PATH}/bwrap
## noblacklist /usr/bin/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

ignore seccomp !chroot
seccomp !chroot,!mount,!pivot_root,!umount2

Assuming my errors means I am missing something. I would like to get some feedback on how I might need to change my local file settings while a final approach is decided. Thank you.

<!-- gh-comment-id:3373052954 --> @rsramkis commented on GitHub (Oct 6, 2025): I've been trying to launch the Arch Linux native (non flatpak) version of Firefox 143.0.4 and it is still crashing with the following error: ``` ❯ firefox Reading profile /etc/firejail/firefox.profile Reading profile /home/rsruser/.config/firejail/firefox.local Reading profile /etc/firejail/firefox-common.profile Reading profile /etc/firejail/disable-common.inc Reading profile /etc/firejail/disable-devel.inc Reading profile /etc/firejail/disable-exec.inc Reading profile /etc/firejail/disable-interpreters.inc Reading profile /etc/firejail/disable-proc.inc Reading profile /etc/firejail/disable-programs.inc Reading profile /etc/firejail/whitelist-common.inc Reading profile /etc/firejail/whitelist-run-common.inc Reading profile /etc/firejail/whitelist-runuser-common.inc Reading profile /etc/firejail/whitelist-usr-share-common.inc Reading profile /etc/firejail/whitelist-var-common.inc firejail version 0.9.76 Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Parent pid 2719, child pid 2723 Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set. Private /etc installed in 209.48 ms Warning: /sbin directory link was not blacklisted Warning: /usr/sbin directory link was not blacklisted Base filesystem installed in 175.92 ms Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior. Child process initialized in 497.28 ms [Parent 40, Main Thread] WARNING: Could not load a pixbuf from icon theme. This may indicate that pixbuf loaders or the mime database could not be found.: 'glib warning', file /usr/src/debug/firefox/firefox-143.0.4/toolkit/xre/nsSigHandlers.cpp:201 (firefox:40): Gtk-WARNING **: 13:36:06.951: Could not load a pixbuf from icon theme. This may indicate that pixbuf loaders or the mime database could not be found. ** Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command: "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "64" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "63" (gdk-pixbuf-error-quark, 0) Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command: "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "64" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "63" (gdk-pixbuf-error-quark, 0) Redirecting call to abort() to mozalloc_abort ExceptionHandler::GenerateDump attempting to generate:/home/rsruser/.mozilla/firefox/99dtdpr6.default-release/minidumps/7a061a8c-0549-6088-3f7d-310a1f807b17.dmp ExceptionHandler::GenerateDump cloned child 120 ExceptionHandler::SendContinueSignalToChild sent continue signal to child ExceptionHandler::WaitForContinueSignal waiting for continue signal... ExceptionHandler::GenerateDump minidump generation failed (process:121): Gtk-CRITICAL **: 13:36:07.059: gtk_window_set_default_icon: assertion 'GDK_IS_PIXBUF (icon)' failed (crashreporter:121): Gtk-WARNING **: 13:36:07.140: Could not load a pixbuf from icon theme. This may indicate that pixbuf loaders or the mime database could not be found. ** Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command: "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "22" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "21" (gdk-pixbuf-error-quark, 0) Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command: "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "22" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "21" (gdk-pixbuf-error-quark, 0) Parent is shutting down, bye... ``` I am using these settings in my firefox.local file: ``` whitelist /usr/share/glycin-loaders noblacklist ${PATH}/bwrap ## noblacklist /usr/bin/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ignore seccomp !chroot seccomp !chroot,!mount,!pivot_root,!umount2 ``` Assuming my errors means I am missing something. I would like to get some feedback on how I might need to change my local file settings while a final approach is decided. Thank you.
Author
Owner

@myrslint commented on GitHub (Oct 6, 2025):

Assuming my errors means I am missing something. I would like to get some feedback on how I might need to change my local file settings while a final approach is decided. Thank you.

Did you already try with noblacklist /usr/bin/bwrap and then decide to comment it out to use the other form?

<!-- gh-comment-id:3373081815 --> @myrslint commented on GitHub (Oct 6, 2025): > Assuming my errors means I am missing something. I would like to get some feedback on how I might need to change my local file settings while a final approach is decided. Thank you. Did you already try with `noblacklist /usr/bin/bwrap` and then decide to comment it out to use the other form?
Author
Owner

@rsramkis commented on GitHub (Oct 6, 2025):

Assuming my errors means I am missing something. I would like to get some feedback on how I might need to change my local file settings while a final approach is decided. Thank you.

Did you already try with noblacklist /usr/bin/bwrap and then decide to comment it out to use the other form?

I tried with these setting individually and firefox failed to start:

  • noblacklist ${PATH}/bwrap
  • noblacklist /usr/bin/bwrap

My initial thoughts is this error:

[Parent 40, Main Thread] WARNING: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.: 'glib warning', file /usr/src/debug/firefox/firefox-143.0.4/toolkit/xre/nsSigHandlers.cpp:201

(firefox:40): Gtk-WARNING **: 13:54:36.749: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
**
Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1

What is it trying to do when loading pixbuf from icon theme located under usr/share/icons/Qogir-dark?

<!-- gh-comment-id:3373133517 --> @rsramkis commented on GitHub (Oct 6, 2025): > > Assuming my errors means I am missing something. I would like to get some feedback on how I might need to change my local file settings while a final approach is decided. Thank you. > > Did you already try with `noblacklist /usr/bin/bwrap` and then decide to comment it out to use the other form? I tried with these setting individually and firefox failed to start: - noblacklist ${PATH}/bwrap - noblacklist /usr/bin/bwrap My initial thoughts is this error: ``` [Parent 40, Main Thread] WARNING: Could not load a pixbuf from icon theme. This may indicate that pixbuf loaders or the mime database could not be found.: 'glib warning', file /usr/src/debug/firefox/firefox-143.0.4/toolkit/xre/nsSigHandlers.cpp:201 (firefox:40): Gtk-WARNING **: 13:54:36.749: Could not load a pixbuf from icon theme. This may indicate that pixbuf loaders or the mime database could not be found. ** Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1 ``` What is it trying to do when loading pixbuf from icon theme located under usr/share/icons/Qogir-dark?
Author
Owner

@kinoegit commented on GitHub (Oct 6, 2025):

Crashing mullvad-browser (FF) with an error log entry that i didn't observe before:


Crash Annotation GraphicsCriticalError: |[C0][GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown (t=17.0117) Exiting due to channel error.
Exiting due to channel error.

mullvad-browser-log.pdf

<!-- gh-comment-id:3373244451 --> @kinoegit commented on GitHub (Oct 6, 2025): Crashing mullvad-browser (FF) with an error log entry that i didn't observe before: ``` Crash Annotation GraphicsCriticalError: |[C0][GFX1-]: CompositorBridgeChild receives IPC close with reason=AbnormalShutdown (t=17.0117) Exiting due to channel error. Exiting due to channel error. ``` [mullvad-browser-log.pdf](https://github.com/user-attachments/files/22728342/mullvad-browser-log.pdf)
Author
Owner

@myrslint commented on GitHub (Oct 6, 2025):

What is it trying to do when loading pixbuf from icon theme located under usr/share/icons/Qogir-dark?

It is trying to execute bwrap as a child process to wrap the image loader and failing to do so. The failure to load the image file is a result of that. As you can see on the first post of this issue this was the error I faced early on but allowing the execution of bwrap seemed to resolve that. That is not happening in your case. You can attempt troubleshooting by trying to run bash under the firefox profile e.g. firejail --profile=/etc/firejail/firefox.profile bash. This should let you poke around a little to see what might be missing.

<!-- gh-comment-id:3373269311 --> @myrslint commented on GitHub (Oct 6, 2025): > What is it trying to do when loading pixbuf from icon theme located under usr/share/icons/Qogir-dark? It is trying to execute `bwrap` as a child process to wrap the image loader and failing to do so. The failure to load the image file is a result of that. As you can see on the first post of this issue this was the error I faced early on but allowing the execution of `bwrap` seemed to resolve that. That is not happening in your case. You can attempt troubleshooting by trying to run bash under the firefox profile e.g. `firejail --profile=/etc/firejail/firefox.profile bash`. This should let you poke around a little to see what might be missing.
Author
Owner

@rsramkis commented on GitHub (Oct 6, 2025):

What is it trying to do when loading pixbuf from icon theme located under usr/share/icons/Qogir-dark?

It is trying to execute bwrap as a child process to wrap the image loader and failing to do so. The failure to load the image file is a result of that. As you can see on the first post of this issue this was the error I faced early on but allowing the execution of bwrap seemed to resolve that. That is not happening in your case. You can attempt troubleshooting by trying to run bash under the firefox profile e.g. firejail --profile=/etc/firejail/firefox.profile bash. This should let you poke around a little to see what might be missing.

This is what I can see when I run the bash command:

❯ firejail --profile=/etc/firejail/firefox.profile bash
Reading profile /etc/firejail/firefox.profile
Reading profile /home/rsruser/.config/firejail/firefox.local
Reading profile /etc/firejail/firefox-common.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-devel.inc
Reading profile /etc/firejail/disable-exec.inc
Reading profile /etc/firejail/disable-interpreters.inc
Reading profile /etc/firejail/disable-proc.inc
Reading profile /etc/firejail/disable-programs.inc
Reading profile /etc/firejail/whitelist-common.inc
Reading profile /etc/firejail/whitelist-run-common.inc
Reading profile /etc/firejail/whitelist-runuser-common.inc
Reading profile /etc/firejail/whitelist-usr-share-common.inc
Reading profile /etc/firejail/whitelist-var-common.inc
firejail version 0.9.76

Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Parent pid 14115, child pid 14119
Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set.
Private /etc installed in 97.77 ms
Warning: /sbin directory link was not blacklisted
Warning: /usr/sbin directory link was not blacklisted
Base filesystem installed in 187.76 ms
Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior.
Child process initialized in 406.01 ms
bash-5.3$
<!-- gh-comment-id:3373463817 --> @rsramkis commented on GitHub (Oct 6, 2025): > > What is it trying to do when loading pixbuf from icon theme located under usr/share/icons/Qogir-dark? > > It is trying to execute `bwrap` as a child process to wrap the image loader and failing to do so. The failure to load the image file is a result of that. As you can see on the first post of this issue this was the error I faced early on but allowing the execution of `bwrap` seemed to resolve that. That is not happening in your case. You can attempt troubleshooting by trying to run bash under the firefox profile e.g. `firejail --profile=/etc/firejail/firefox.profile bash`. This should let you poke around a little to see what might be missing. This is what I can see when I run the bash command: ``` ❯ firejail --profile=/etc/firejail/firefox.profile bash Reading profile /etc/firejail/firefox.profile Reading profile /home/rsruser/.config/firejail/firefox.local Reading profile /etc/firejail/firefox-common.profile Reading profile /etc/firejail/disable-common.inc Reading profile /etc/firejail/disable-devel.inc Reading profile /etc/firejail/disable-exec.inc Reading profile /etc/firejail/disable-interpreters.inc Reading profile /etc/firejail/disable-proc.inc Reading profile /etc/firejail/disable-programs.inc Reading profile /etc/firejail/whitelist-common.inc Reading profile /etc/firejail/whitelist-run-common.inc Reading profile /etc/firejail/whitelist-runuser-common.inc Reading profile /etc/firejail/whitelist-usr-share-common.inc Reading profile /etc/firejail/whitelist-var-common.inc firejail version 0.9.76 Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Parent pid 14115, child pid 14119 Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set. Private /etc installed in 97.77 ms Warning: /sbin directory link was not blacklisted Warning: /usr/sbin directory link was not blacklisted Base filesystem installed in 187.76 ms Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior. Child process initialized in 406.01 ms bash-5.3$ ```
Author
Owner

@BlueMax commented on GitHub (Oct 6, 2025):

@rsramkis:
What kernel? Is this real Arch or derivate (CachyOS, Manjaro, etc)? Do you have AppArmor? Then disable that.

<!-- gh-comment-id:3374063664 --> @BlueMax commented on GitHub (Oct 6, 2025): @rsramkis: What kernel? Is this real Arch or derivate (CachyOS, Manjaro, etc)? Do you have AppArmor? Then disable that.
Author
Owner

@rsramkis commented on GitHub (Oct 6, 2025):

@rsramkis: What kernel? Is this real Arch or derivate (CachyOS, Manjaro, etc)? Do you have AppArmor? Then disable that.

Distro: EndeavourOS
Kernel: 6.16.10-zen1-1-zen
Desktop: GNOME v: 49.0

I disabled Apparmor in the kernel and rebooted and got the following as firefox successfully started:

 sudo aa-status
[sudo] password for rsruser:
apparmor module is loaded.
apparmor filesystem is not mounted.

~ took 2s
❯ firefox
Reading profile /etc/firejail/firefox.profile
Reading profile /home/rsruser/.config/firejail/firefox.local
Reading profile /etc/firejail/firefox-common.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-devel.inc
Reading profile /etc/firejail/disable-exec.inc
Reading profile /etc/firejail/disable-interpreters.inc
Reading profile /etc/firejail/disable-proc.inc
Reading profile /etc/firejail/disable-programs.inc
Reading profile /etc/firejail/whitelist-common.inc
Reading profile /etc/firejail/whitelist-run-common.inc
Reading profile /etc/firejail/whitelist-runuser-common.inc
Reading profile /etc/firejail/whitelist-usr-share-common.inc
Reading profile /etc/firejail/whitelist-var-common.inc
firejail version 0.9.76

Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Parent pid 3755, child pid 3759
Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set.
Private /etc installed in 60.75 ms
Warning: /sbin directory link was not blacklisted
Warning: /usr/sbin directory link was not blacklisted
Base filesystem installed in 151.92 ms
Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior.
Warning: Cannot confine the application using AppArmor.
Maybe firejail-default AppArmor profile is not loaded into the kernel.
As root, run "aa-enforce firejail-default" to load it.
Child process initialized in 307.53 ms

Parent is shutting down, bye...

This is the firefox.local file I used for this test:

whitelist /usr/share/glycin-loaders
## noblacklist ${PATH}/bwrap
noblacklist /usr/bin/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

ignore seccomp !chroot
seccomp !chroot,!mount,!pivot_root,!umount2
<!-- gh-comment-id:3374213724 --> @rsramkis commented on GitHub (Oct 6, 2025): > [@rsramkis](https://github.com/rsramkis): What kernel? Is this real Arch or derivate (CachyOS, Manjaro, etc)? Do you have AppArmor? Then disable that. Distro: EndeavourOS Kernel: 6.16.10-zen1-1-zen Desktop: GNOME v: 49.0 I disabled Apparmor in the kernel and rebooted and got the following as firefox successfully started: ``` sudo aa-status [sudo] password for rsruser: apparmor module is loaded. apparmor filesystem is not mounted. ~ took 2s ❯ firefox Reading profile /etc/firejail/firefox.profile Reading profile /home/rsruser/.config/firejail/firefox.local Reading profile /etc/firejail/firefox-common.profile Reading profile /etc/firejail/disable-common.inc Reading profile /etc/firejail/disable-devel.inc Reading profile /etc/firejail/disable-exec.inc Reading profile /etc/firejail/disable-interpreters.inc Reading profile /etc/firejail/disable-proc.inc Reading profile /etc/firejail/disable-programs.inc Reading profile /etc/firejail/whitelist-common.inc Reading profile /etc/firejail/whitelist-run-common.inc Reading profile /etc/firejail/whitelist-runuser-common.inc Reading profile /etc/firejail/whitelist-usr-share-common.inc Reading profile /etc/firejail/whitelist-var-common.inc firejail version 0.9.76 Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Parent pid 3755, child pid 3759 Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set. Private /etc installed in 60.75 ms Warning: /sbin directory link was not blacklisted Warning: /usr/sbin directory link was not blacklisted Base filesystem installed in 151.92 ms Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior. Warning: Cannot confine the application using AppArmor. Maybe firejail-default AppArmor profile is not loaded into the kernel. As root, run "aa-enforce firejail-default" to load it. Child process initialized in 307.53 ms Parent is shutting down, bye... ``` This is the firefox.local file I used for this test: ``` whitelist /usr/share/glycin-loaders ## noblacklist ${PATH}/bwrap noblacklist /usr/bin/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ignore seccomp !chroot seccomp !chroot,!mount,!pivot_root,!umount2 ```
Author
Owner

@Bundy01 commented on GitHub (Oct 7, 2025):

Hi,

1- I added whitelist /usr/share/glycin-loaders in whitelist-usr-share-common.inc.
2- Add noblacklist ${PATH}/bwrap (ArchLinux).
3- If private-bin is in the profile, add bwrap.
4- If memory-deny-write-execute is present in the profile, uncomment the line or delete it.

Regards.

<!-- gh-comment-id:3374789582 --> @Bundy01 commented on GitHub (Oct 7, 2025): Hi, 1- I added `whitelist /usr/share/glycin-loaders` in `whitelist-usr-share-common.inc`. 2- Add `noblacklist ${PATH}/bwrap` (ArchLinux). 3- If `private-bin` is in the profile, add `bwrap`. 4- If `memory-deny-write-execute` is present in the profile, uncomment the line or delete it. Regards.
Author
Owner

@kinoegit commented on GitHub (Oct 7, 2025):

I had added all of what you suggested: no success with brave and mullvad-browser but with librewolf (firefox fork)

<!-- gh-comment-id:3375827415 --> @kinoegit commented on GitHub (Oct 7, 2025): I had added all of what you suggested: no success with brave and mullvad-browser but with librewolf (firefox fork)
Author
Owner

@Bundy01 commented on GitHub (Oct 7, 2025):

@kinoegit I just installed Firefox to test it and I don't need to make any additions, it works natively. I'm posting the local files.

firefox.profile

# Firejail profile for firefox
# Description: Safe and easy web browser from Mozilla
# This file is overwritten after every install/update
# Persistent local customizations
include firefox.local
# Persistent global definitions
include globals.local

# Note: Sandboxing web browsers is as important as it is complex. Users might
# be interested in creating custom profiles depending on the use case (e.g. one
# for general browsing, another for banking, ...). Consult our FAQ/issue
# tracker for more information. Here are a few links to get you going:
# https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#firefox-doesnt-open-in-a-new-sandbox-instead-it-opens-a-new-tab-in-an-existing-firefox-instance
# https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#how-do-i-run-two-instances-of-firefox
# https://github.com/netblue30/firejail/issues/4206#issuecomment-824806968

# (Ignore entry from disable-common.inc)
ignore read-only ${HOME}/.mozilla/firefox/profiles.ini

noblacklist ${HOME}/.cache/mozilla
noblacklist ${HOME}/.mozilla
noblacklist ${RUNUSER}/*firefox*
noblacklist ${RUNUSER}/psd/*firefox*

blacklist /usr/libexec

##mkdir ${HOME}/.cache/mozilla/firefox
mkdir ${HOME}/.mozilla
##whitelist ${HOME}/.cache/mozilla/firefox
whitelist ${HOME}/.mozilla

whitelist /usr/share/firefox
whitelist /usr/share/gnome-shell/search-providers/firefox-search-provider.ini
whitelist ${RUNUSER}/*firefox*
whitelist ${RUNUSER}/psd/*firefox*
include whitelist-usr-share-common.inc

## firefox requires a shell to launch on Arch - add the next line to your firefox.local to enable private-bin.
private-bin bash,dbus-launch,dbus-send,env,firefox,sh,which
# Fedora uses shell scripts to launch firefox - add the next line to your firefox.local to enable private-bin.
#private-bin basename,bash,cat,dirname,expr,false,firefox,firefox-wayland,getenforce,ln,mkdir,pidof,restorecon,rm,rmdir,sed,sh,tclsh,true,uname
private-etc firefox

dbus-user filter
dbus-user.own org.mozilla.*
dbus-user.own org.mpris.MediaPlayer2.firefox.*
ignore dbus-user none

# Redirect
include firefox-common.profile

firefox-common.profile

# Firejail profile for firefox-common
# This file is overwritten after every install/update
# Persistent local customizations
include firefox-common.local
# Persistent global definitions
# added by caller profile
#include globals.local

# noexec ${HOME} breaks DRM binaries.
##?BROWSER_ALLOW_DRM: ignore noexec ${HOME}
# noexec ${RUNUSER} breaks DRM binaries when using profile-sync-daemon.
##?BROWSER_ALLOW_DRM: ignore noexec ${RUNUSER}

# Add the next line to your firefox-common.local to allow access to common programs/addons/plugins.
#include firefox-common-addons.profile

noblacklist ${HOME}/.local/share/pki
noblacklist ${HOME}/.pki

blacklist ${PATH}/curl
blacklist ${PATH}/wget
blacklist ${PATH}/wget2

include disable-common.inc
include disable-devel.inc
#include disable-exec.inc
include disable-interpreters.inc
include disable-proc.inc
include disable-programs.inc

mkdir ${HOME}/.local/share/pki
mkdir ${HOME}/.pki
whitelist ${DESKTOP}
whitelist ${HOME}/.local/share/pki
whitelist ${HOME}/.pki
whitelist /usr/share/doc
whitelist /usr/share/gtk-doc/html
whitelist /usr/share/mozilla
whitelist /usr/share/webext
include whitelist-common.inc
include whitelist-run-common.inc
include whitelist-runuser-common.inc
include whitelist-usr-share-common.inc
include whitelist-var-common.inc

apparmor
# Fixme!
apparmor-replace
caps.drop all
# Note: machine-id breaks pulseaudio; add it to firefox-common.local if sound
# is not required.
#machine-id
netfilter
nodvd
nogroups
noinput
nonewprivs
# Note: noroot breaks GTK_USE_PORTAL=1 usage; see
# https://github.com/netblue30/firejail/issues/2506.
noroot
notv
?BROWSER_DISABLE_U2F: nou2f
protocol unix,inet,inet6,netlink
# Note: The seccomp line below still permits the chroot syscall; see
# https://github.com/netblue30/firejail/issues/2506 for possible workarounds.
seccomp !chroot
# Note: tracelog may break or cause major issues with many Firefox-based
# browsers; see https://github.com/netblue30/firejail/issues/1930.
#tracelog

disable-mnt
?BROWSER_DISABLE_U2F: private-dev
# Note: The private-etc line below works fine on most distributions but it
# could cause problems on CentOS.
private-etc @tls-ca,@x11,mailcap,mime.types,os-release
private-tmp

# Note: `dbus-user none` breaks various desktop integration features like
# global menus, native notifications, Gnome connector, KDE Connect and power
# management on KDE Plasma.
dbus-user none
dbus-system none

# Allow drag and drop
dbus-user.talk org.freedesktop.portal.Documents
# Add the next line to firefox-common.local to enable native notifications.
#dbus-user.talk org.freedesktop.Notifications
# Add the next line to firefox-common.local to allow inhibiting screensavers.
#dbus-user.talk org.freedesktop.ScreenSaver
# Add the next lines to firefox-common.local for plasma browser integration.
#dbus-user.own org.mpris.MediaPlayer2.plasma-browser-integration
#dbus-user.talk org.kde.JobViewServer
#dbus-user.talk org.kde.kdeconnect
#dbus-user.talk org.kde.kuiserver
# Add the next line to firefox-common.local to allow screensharing under
# Wayland.
#dbus-user.talk org.freedesktop.portal.Desktop
# Also add the next line to firefox-common.local if screensharing does not work
# with the above lines (depends on the portal implementation).
#ignore noroot

#restrict-namespaces

<!-- gh-comment-id:3377232930 --> @Bundy01 commented on GitHub (Oct 7, 2025): @kinoegit I just installed Firefox to test it and I don't need to make any additions, it works natively. I'm posting the local files. <details> <summary>firefox.profile</summary> <p> ``` # Firejail profile for firefox # Description: Safe and easy web browser from Mozilla # This file is overwritten after every install/update # Persistent local customizations include firefox.local # Persistent global definitions include globals.local # Note: Sandboxing web browsers is as important as it is complex. Users might # be interested in creating custom profiles depending on the use case (e.g. one # for general browsing, another for banking, ...). Consult our FAQ/issue # tracker for more information. Here are a few links to get you going: # https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#firefox-doesnt-open-in-a-new-sandbox-instead-it-opens-a-new-tab-in-an-existing-firefox-instance # https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#how-do-i-run-two-instances-of-firefox # https://github.com/netblue30/firejail/issues/4206#issuecomment-824806968 # (Ignore entry from disable-common.inc) ignore read-only ${HOME}/.mozilla/firefox/profiles.ini noblacklist ${HOME}/.cache/mozilla noblacklist ${HOME}/.mozilla noblacklist ${RUNUSER}/*firefox* noblacklist ${RUNUSER}/psd/*firefox* blacklist /usr/libexec ##mkdir ${HOME}/.cache/mozilla/firefox mkdir ${HOME}/.mozilla ##whitelist ${HOME}/.cache/mozilla/firefox whitelist ${HOME}/.mozilla whitelist /usr/share/firefox whitelist /usr/share/gnome-shell/search-providers/firefox-search-provider.ini whitelist ${RUNUSER}/*firefox* whitelist ${RUNUSER}/psd/*firefox* include whitelist-usr-share-common.inc ## firefox requires a shell to launch on Arch - add the next line to your firefox.local to enable private-bin. private-bin bash,dbus-launch,dbus-send,env,firefox,sh,which # Fedora uses shell scripts to launch firefox - add the next line to your firefox.local to enable private-bin. #private-bin basename,bash,cat,dirname,expr,false,firefox,firefox-wayland,getenforce,ln,mkdir,pidof,restorecon,rm,rmdir,sed,sh,tclsh,true,uname private-etc firefox dbus-user filter dbus-user.own org.mozilla.* dbus-user.own org.mpris.MediaPlayer2.firefox.* ignore dbus-user none # Redirect include firefox-common.profile ``` </p> </details> <details> <summary>firefox-common.profile</summary> <p> ``` # Firejail profile for firefox-common # This file is overwritten after every install/update # Persistent local customizations include firefox-common.local # Persistent global definitions # added by caller profile #include globals.local # noexec ${HOME} breaks DRM binaries. ##?BROWSER_ALLOW_DRM: ignore noexec ${HOME} # noexec ${RUNUSER} breaks DRM binaries when using profile-sync-daemon. ##?BROWSER_ALLOW_DRM: ignore noexec ${RUNUSER} # Add the next line to your firefox-common.local to allow access to common programs/addons/plugins. #include firefox-common-addons.profile noblacklist ${HOME}/.local/share/pki noblacklist ${HOME}/.pki blacklist ${PATH}/curl blacklist ${PATH}/wget blacklist ${PATH}/wget2 include disable-common.inc include disable-devel.inc #include disable-exec.inc include disable-interpreters.inc include disable-proc.inc include disable-programs.inc mkdir ${HOME}/.local/share/pki mkdir ${HOME}/.pki whitelist ${DESKTOP} whitelist ${HOME}/.local/share/pki whitelist ${HOME}/.pki whitelist /usr/share/doc whitelist /usr/share/gtk-doc/html whitelist /usr/share/mozilla whitelist /usr/share/webext include whitelist-common.inc include whitelist-run-common.inc include whitelist-runuser-common.inc include whitelist-usr-share-common.inc include whitelist-var-common.inc apparmor # Fixme! apparmor-replace caps.drop all # Note: machine-id breaks pulseaudio; add it to firefox-common.local if sound # is not required. #machine-id netfilter nodvd nogroups noinput nonewprivs # Note: noroot breaks GTK_USE_PORTAL=1 usage; see # https://github.com/netblue30/firejail/issues/2506. noroot notv ?BROWSER_DISABLE_U2F: nou2f protocol unix,inet,inet6,netlink # Note: The seccomp line below still permits the chroot syscall; see # https://github.com/netblue30/firejail/issues/2506 for possible workarounds. seccomp !chroot # Note: tracelog may break or cause major issues with many Firefox-based # browsers; see https://github.com/netblue30/firejail/issues/1930. #tracelog disable-mnt ?BROWSER_DISABLE_U2F: private-dev # Note: The private-etc line below works fine on most distributions but it # could cause problems on CentOS. private-etc @tls-ca,@x11,mailcap,mime.types,os-release private-tmp # Note: `dbus-user none` breaks various desktop integration features like # global menus, native notifications, Gnome connector, KDE Connect and power # management on KDE Plasma. dbus-user none dbus-system none # Allow drag and drop dbus-user.talk org.freedesktop.portal.Documents # Add the next line to firefox-common.local to enable native notifications. #dbus-user.talk org.freedesktop.Notifications # Add the next line to firefox-common.local to allow inhibiting screensavers. #dbus-user.talk org.freedesktop.ScreenSaver # Add the next lines to firefox-common.local for plasma browser integration. #dbus-user.own org.mpris.MediaPlayer2.plasma-browser-integration #dbus-user.talk org.kde.JobViewServer #dbus-user.talk org.kde.kdeconnect #dbus-user.talk org.kde.kuiserver # Add the next line to firefox-common.local to allow screensharing under # Wayland. #dbus-user.talk org.freedesktop.portal.Desktop # Also add the next line to firefox-common.local if screensharing does not work # with the above lines (depends on the portal implementation). #ignore noroot #restrict-namespaces ``` </p> </details>
Author
Owner

@rsramkis commented on GitHub (Oct 7, 2025):

1- I added whitelist /usr/share/glycin-loaders in whitelist-usr-share-common.inc.

  • Done. Added to end of file "/etc/firejail/whitelist-usr-share-common.inc".

2- Add noblacklist ${PATH}/bwrap (ArchLinux).

  • Done. Added to ~/.config/firejail/firefox.local

3- If private-bin is in the profile, add bwrap.

  • Checked the files "/etc/firejail/firefox.profile" and "/etc/firejail/firefox-common.profile" and there is no mention of private-bin.

4- If memory-deny-write-execute is present in the profile, uncomment the line or delete it.

  • I only confirmed that the memory-deny-write-execute configuration is not set in firefox.local, firefox.profile and firefox-common.profile.

With the new settings I get the following output launching firefox from terminal:

❯ firefox
Reading profile /etc/firejail/firefox.profile
Reading profile /home/rsruser/.config/firejail/firefox.local
Reading profile /etc/firejail/firefox-common.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-devel.inc
Reading profile /etc/firejail/disable-exec.inc
Reading profile /etc/firejail/disable-interpreters.inc
Reading profile /etc/firejail/disable-proc.inc
Reading profile /etc/firejail/disable-programs.inc
Reading profile /etc/firejail/whitelist-common.inc
Reading profile /etc/firejail/whitelist-run-common.inc
Reading profile /etc/firejail/whitelist-runuser-common.inc
Reading profile /etc/firejail/whitelist-usr-share-common.inc
Reading profile /etc/firejail/whitelist-var-common.inc
firejail version 0.9.76

Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Parent pid 5262, child pid 5266
Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set.
Private /etc installed in 66.23 ms
Warning: /sbin directory link was not blacklisted
Warning: /usr/sbin directory link was not blacklisted
Base filesystem installed in 154.70 ms
Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior.
Child process initialized in 322.80 ms
[Parent 84, Main Thread] WARNING: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.: 'glib warning', file /usr/src/debug/firefox/firefox-143.0.4/toolkit/xre/nsSigHandlers.cpp:201

(firefox:84): Gtk-WARNING **: 12:05:26.624: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
**
Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command:
 "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib64" "--symlink" "/usr/lib" "/lib" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "67" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "66" (gdk-pixbuf-error-quark, 0)
Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command:  "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib64" "--symlink" "/usr/lib" "/lib" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "67" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "66" (gdk-pixbuf-error-quark, 0)
Redirecting call to abort() to mozalloc_abort

ExceptionHandler::GenerateDump attempting to generate:/home/rsruser/.mozilla/firefox/drxzi8yi.default-release/minidumps/12241954-3b9e-9b1b-2809-ab2f141c5b41.dmp
ExceptionHandler::GenerateDump cloned child 153
ExceptionHandler::WaitForContinueSignal waiting for continue signal...
ExceptionHandler::SendContinueSignalToChild sent continue signal to child
ExceptionHandler::GenerateDump minidump generation failed

** (process:5263): WARNING **: 12:05:26.707: Error writing credentials to socket: Error sending message: Broken pipe

(process:154): Gtk-CRITICAL **: 12:05:26.721: gtk_window_set_default_icon: assertion 'GDK_IS_PIXBUF (icon)' failed

(crashreporter:154): Gtk-WARNING **: 12:05:26.811: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
**
Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command:
 "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib64" "--symlink" "/usr/lib" "/lib" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "33" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "32" (gdk-pixbuf-error-quark, 0)
Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command:  "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib64" "--symlink" "/usr/lib" "/lib" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "33" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "32" (gdk-pixbuf-error-quark, 0)

Parent is shutting down, bye...

Firefox version information:

❯ firefox --version
Reading profile /etc/firejail/firefox.profile
Reading profile /home/rsruser/.config/firejail/firefox.local
Reading profile /etc/firejail/firefox-common.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-devel.inc
Reading profile /etc/firejail/disable-exec.inc
Reading profile /etc/firejail/disable-interpreters.inc
Reading profile /etc/firejail/disable-proc.inc
Reading profile /etc/firejail/disable-programs.inc
Reading profile /etc/firejail/whitelist-common.inc
Reading profile /etc/firejail/whitelist-run-common.inc
Reading profile /etc/firejail/whitelist-runuser-common.inc
Reading profile /etc/firejail/whitelist-usr-share-common.inc
Reading profile /etc/firejail/whitelist-var-common.inc
firejail version 0.9.76

Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Parent pid 5504, child pid 5508
Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set.
Private /etc installed in 66.89 ms
Warning: /sbin directory link was not blacklisted
Warning: /usr/sbin directory link was not blacklisted
Base filesystem installed in 155.94 ms
Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior.
Child process initialized in 324.49 ms
Mozilla Firefox 143.0.4

Parent is shutting down, bye...

So still not working with the recommended firefox.local settings.

<!-- gh-comment-id:3377586393 --> @rsramkis commented on GitHub (Oct 7, 2025): 1- I added `whitelist /usr/share/glycin-loaders` in `whitelist-usr-share-common.inc`. - Done. Added to end of file "/etc/firejail/whitelist-usr-share-common.inc". 2- Add `noblacklist ${PATH}/bwrap` (ArchLinux). - Done. Added to ~/.config/firejail/firefox.local 3- If `private-bin` is in the profile, add `bwrap`. - Checked the files "/etc/firejail/firefox.profile" and "/etc/firejail/firefox-common.profile" and there is no mention of private-bin. 4- If `memory-deny-write-execute` is present in the profile, uncomment the line or delete it. - I only confirmed that the `memory-deny-write-execute` configuration is not set in firefox.local, firefox.profile and firefox-common.profile. With the new settings I get the following output launching firefox from terminal: ``` ❯ firefox Reading profile /etc/firejail/firefox.profile Reading profile /home/rsruser/.config/firejail/firefox.local Reading profile /etc/firejail/firefox-common.profile Reading profile /etc/firejail/disable-common.inc Reading profile /etc/firejail/disable-devel.inc Reading profile /etc/firejail/disable-exec.inc Reading profile /etc/firejail/disable-interpreters.inc Reading profile /etc/firejail/disable-proc.inc Reading profile /etc/firejail/disable-programs.inc Reading profile /etc/firejail/whitelist-common.inc Reading profile /etc/firejail/whitelist-run-common.inc Reading profile /etc/firejail/whitelist-runuser-common.inc Reading profile /etc/firejail/whitelist-usr-share-common.inc Reading profile /etc/firejail/whitelist-var-common.inc firejail version 0.9.76 Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Parent pid 5262, child pid 5266 Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set. Private /etc installed in 66.23 ms Warning: /sbin directory link was not blacklisted Warning: /usr/sbin directory link was not blacklisted Base filesystem installed in 154.70 ms Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior. Child process initialized in 322.80 ms [Parent 84, Main Thread] WARNING: Could not load a pixbuf from icon theme. This may indicate that pixbuf loaders or the mime database could not be found.: 'glib warning', file /usr/src/debug/firefox/firefox-143.0.4/toolkit/xre/nsSigHandlers.cpp:201 (firefox:84): Gtk-WARNING **: 12:05:26.624: Could not load a pixbuf from icon theme. This may indicate that pixbuf loaders or the mime database could not be found. ** Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command: "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib64" "--symlink" "/usr/lib" "/lib" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "67" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "66" (gdk-pixbuf-error-quark, 0) Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command: "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib64" "--symlink" "/usr/lib" "/lib" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "67" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "66" (gdk-pixbuf-error-quark, 0) Redirecting call to abort() to mozalloc_abort ExceptionHandler::GenerateDump attempting to generate:/home/rsruser/.mozilla/firefox/drxzi8yi.default-release/minidumps/12241954-3b9e-9b1b-2809-ab2f141c5b41.dmp ExceptionHandler::GenerateDump cloned child 153 ExceptionHandler::WaitForContinueSignal waiting for continue signal... ExceptionHandler::SendContinueSignalToChild sent continue signal to child ExceptionHandler::GenerateDump minidump generation failed ** (process:5263): WARNING **: 12:05:26.707: Error writing credentials to socket: Error sending message: Broken pipe (process:154): Gtk-CRITICAL **: 12:05:26.721: gtk_window_set_default_icon: assertion 'GDK_IS_PIXBUF (icon)' failed (crashreporter:154): Gtk-WARNING **: 12:05:26.811: Could not load a pixbuf from icon theme. This may indicate that pixbuf loaders or the mime database could not be found. ** Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command: "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib64" "--symlink" "/usr/lib" "/lib" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "33" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "32" (gdk-pixbuf-error-quark, 0) Bail out! Gtk:ERROR:../gtk/gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Qogir-dark/16/actions/image-missing.svg: Loader process exited early with status '1'Command: "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib64" "--symlink" "/usr/lib" "/lib" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/rsruser/.cache/fontconfig" "/home/rsruser/.cache/fontconfig" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/rsruser/.cache/glycin/usr/lib/glycin-loaders/2+/glycin-svg" "--seccomp" "33" "/usr/lib/glycin-loaders/2+/glycin-svg" "--dbus-fd" "32" (gdk-pixbuf-error-quark, 0) Parent is shutting down, bye... ``` Firefox version information: ``` ❯ firefox --version Reading profile /etc/firejail/firefox.profile Reading profile /home/rsruser/.config/firejail/firefox.local Reading profile /etc/firejail/firefox-common.profile Reading profile /etc/firejail/disable-common.inc Reading profile /etc/firejail/disable-devel.inc Reading profile /etc/firejail/disable-exec.inc Reading profile /etc/firejail/disable-interpreters.inc Reading profile /etc/firejail/disable-proc.inc Reading profile /etc/firejail/disable-programs.inc Reading profile /etc/firejail/whitelist-common.inc Reading profile /etc/firejail/whitelist-run-common.inc Reading profile /etc/firejail/whitelist-runuser-common.inc Reading profile /etc/firejail/whitelist-usr-share-common.inc Reading profile /etc/firejail/whitelist-var-common.inc firejail version 0.9.76 Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Parent pid 5504, child pid 5508 Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set. Private /etc installed in 66.89 ms Warning: /sbin directory link was not blacklisted Warning: /usr/sbin directory link was not blacklisted Base filesystem installed in 155.94 ms Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior. Child process initialized in 324.49 ms Mozilla Firefox 143.0.4 Parent is shutting down, bye... ``` So still not working with the recommended firefox.local settings.
Author
Owner

@Bundy01 commented on GitHub (Oct 7, 2025):

@rsramkis I don't understand, with the two files I posted, I don't need to authorize bwrap, so there are no related errors.
You need to install both files in ~/.config/firejail.

What distribution are you using?
For seccomp, I only have seccomp !chroot.

If it still doesn't work, you'll have to comment out the lines in both files. Once Firefox launches, uncomment them in small batches until you find the offending line(s).

<!-- gh-comment-id:3377963767 --> @Bundy01 commented on GitHub (Oct 7, 2025): @rsramkis I don't understand, with the two files I posted, I don't need to authorize bwrap, so there are no related errors. You need to install both files in `~/.config/firejail`. What distribution are you using? For seccomp, I only have `seccomp !chroot`. If it still doesn't work, you'll have to comment out the lines in both files. Once Firefox launches, uncomment them in small batches until you find the offending line(s).
Author
Owner

@rsramkis commented on GitHub (Oct 7, 2025):

@rsramkis I don't understand, with the two files I posted, I don't need to authorize bwrap, so there are no related errors. You need to install both files in ~/.config/firejail.

What distribution are you using? For seccomp, I only have seccomp !chroot.

If it still doesn't work, you'll have to comment out the lines in both files. Once Firefox launches, uncomment them in small batches until you find the offending line(s).

Distro: EndeavourOS
Kernel: 6.16.10-zen1-1-zen
Desktop: GNOME v: 49.0

I totally missed the step of replacing the firefox.profile and firefox-common.profile files with your versions. My versions of these files are the latest from the Arch Repositories. I have now replaced my firefox.profile and firefox-common.profile and firefox is still crashing on start.

Question, when you mentioned "For seccomp, I only have seccomp !chroot", were you referring to the firefox.local file?

<!-- gh-comment-id:3378052730 --> @rsramkis commented on GitHub (Oct 7, 2025): > [@rsramkis](https://github.com/rsramkis) I don't understand, with the two files I posted, I don't need to authorize bwrap, so there are no related errors. You need to install both files in `~/.config/firejail`. > > What distribution are you using? For seccomp, I only have `seccomp !chroot`. > > If it still doesn't work, you'll have to comment out the lines in both files. Once Firefox launches, uncomment them in small batches until you find the offending line(s). Distro: EndeavourOS Kernel: 6.16.10-zen1-1-zen Desktop: GNOME v: 49.0 I totally missed the step of replacing the firefox.profile and firefox-common.profile files with your versions. My versions of these files are the latest from the Arch Repositories. I have now replaced my firefox.profile and firefox-common.profile and firefox is still crashing on start. Question, when you mentioned "For seccomp, I only have seccomp !chroot", were you referring to the firefox.local file?
Author
Owner

@Bundy01 commented on GitHub (Oct 7, 2025):

Yes, on the file provided.
If you still get an error mentioning bwrap when you try to launch Firefox, add what I put above (1, 2, and 3) in my posted files.

If it still doesn't work, you'll have to comment out the lines one by one to find the culprit.

<!-- gh-comment-id:3378328295 --> @Bundy01 commented on GitHub (Oct 7, 2025): Yes, on the file provided. If you still get an error mentioning bwrap when you try to launch Firefox, add what I put above (1, 2, and 3) in my posted files. If it still doesn't work, you'll have to comment out the lines one by one to find the culprit.
Author
Owner

@rsramkis commented on GitHub (Oct 7, 2025):

Yes, on the file provided. If you still get an error mentioning bwrap when you try to launch Firefox, add what I put above (1, 2, and 3) in my posted files.

If it still doesn't work, you'll have to comment out the lines one by one to find the culprit.

I went ahead and started commenting out lines for firefox.profile and firefox-common.profile. Anything I commented out has '##'.

This is the configuration which lets me run firefox where the whitelist-usr-share-common.inc file is back to its default settings. Note that I had to comment out lines in the firefox.local configuration file too.

firefox.profile

# Firejail profile for firefox
# Description: Safe and easy web browser from Mozilla
# This file is overwritten after every install/update
# Persistent local customizations
include firefox.local
# Persistent global definitions
include globals.local

# Note: Sandboxing web browsers is as important as it is complex. Users might
# be interested in creating custom profiles depending on the use case (e.g. one
# for general browsing, another for banking, ...). Consult our FAQ/issue
# tracker for more information. Here are a few links to get you going:
# https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#firefox-doesnt-open-in-a-new-sandbox-instead-it-opens-a-new-tab-in-an-existing-firefox-instance
# https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#how-do-i-run-two-instances-of-firefox
# https://github.com/netblue30/firejail/issues/4206#issuecomment-824806968

# (Ignore entry from disable-common.inc)
ignore read-only ${HOME}/.mozilla/firefox/profiles.ini

noblacklist ${HOME}/.cache/mozilla
noblacklist ${HOME}/.mozilla
noblacklist ${RUNUSER}/*firefox*
noblacklist ${RUNUSER}/psd/*firefox*

blacklist /usr/libexec

mkdir ${HOME}/.cache/mozilla/firefox
mkdir ${HOME}/.mozilla
whitelist ${HOME}/.cache/mozilla/firefox
whitelist ${HOME}/.mozilla

## whitelist /usr/share/firefox
## whitelist /usr/share/gnome-shell/search-providers/firefox-search-provider.ini
## whitelist ${RUNUSER}/*firefox*
## whitelist ${RUNUSER}/psd/*firefox*

# Note: Firefox requires a shell to launch on Arch and Fedora.
# Add the next lines to firefox.local to enable private-bin.
#private-bin bash,dbus-launch,dbus-send,env,firefox,sh,which
#private-bin basename,bash,cat,dirname,expr,false,firefox,firefox-wayland,getenforce,ln,mkdir,pidof,restorecon,rm,rmdir,sed,sh,tclsh,true,uname
private-etc firefox

dbus-user filter
dbus-user.own org.mozilla.*
dbus-user.own org.mpris.MediaPlayer2.firefox.*
ignore dbus-user none

# Redirect
## include firefox-common.profile

firefox-common.profile

# Firejail profile for firefox-common
# This file is overwritten after every install/update
# Persistent local customizations
include firefox-common.local
# Persistent global definitions
# added by caller profile
#include globals.local

# noexec ${HOME} breaks DRM binaries.
?BROWSER_ALLOW_DRM: ignore noexec ${HOME}
# noexec ${RUNUSER} breaks DRM binaries when using profile-sync-daemon.
?BROWSER_ALLOW_DRM: ignore noexec ${RUNUSER}

# Add the next lines to firefox-common.local if you want to use the migration
# wizard.
#noblacklist ${HOME}/.mozilla
#whitelist ${HOME}/.mozilla

# To enable support for the KeePassXC extension, add the following lines to
# firefox-common.local.
# Note: Start KeePassXC before the web browser and keep it open to allow
# communication between them.
#noblacklist ${RUNUSER}/app
#whitelist ${RUNUSER}/app/org.keepassxc.KeePassXC
#whitelist ${RUNUSER}/kpxc_server
#whitelist ${RUNUSER}/org.keepassxc.KeePassXC.BrowserServer

# Add the next line to firefox-common.local to allow access to common
# programs/addons/plugins.
#include firefox-common-addons.profile

noblacklist ${HOME}/.local/share/pki
noblacklist ${HOME}/.pki

blacklist ${PATH}/curl
blacklist ${PATH}/wget
blacklist ${PATH}/wget2

include disable-common.inc
include disable-devel.inc
include disable-exec.inc
include disable-interpreters.inc
include disable-proc.inc
include disable-programs.inc

mkdir ${HOME}/.local/share/pki
whitelist ${DOWNLOADS}
whitelist ${HOME}/.local/share/pki
whitelist ${HOME}/.pki
## whitelist /usr/share/doc
## whitelist /usr/share/gtk-doc/html
## whitelist /usr/share/mozilla
## whitelist /usr/share/webext
include whitelist-common.inc
include whitelist-run-common.inc
include whitelist-runuser-common.inc
## include whitelist-usr-share-common.inc
include whitelist-var-common.inc

## apparmor
# Fixme!
apparmor-replace
caps.drop all
# Note: machine-id breaks pulseaudio; add it to firefox-common.local if sound
# is not required.
#machine-id
netfilter
nodvd
nogroups
noinput
nonewprivs
# Note: noroot breaks GTK_USE_PORTAL=1 usage; see
# https://github.com/netblue30/firejail/issues/2506.
noroot
notv
?BROWSER_DISABLE_U2F: nou2f
protocol unix,inet,inet6,netlink
# Note: The seccomp line below still permits the chroot syscall; see
# https://github.com/netblue30/firejail/issues/2506 for possible workarounds.
seccomp !chroot
# Note: tracelog may break or cause major issues with many Firefox-based
# browsers; see https://github.com/netblue30/firejail/issues/1930.
#tracelog

disable-mnt
?BROWSER_DISABLE_U2F: private-dev
# Note: The private-etc line below works fine on most distributions but it
# could cause problems on CentOS.
private-etc @tls-ca,@x11,mailcap,mime.types,os-release
private-tmp

# Note: `dbus-user none` breaks various desktop integration features like
# global menus, native notifications, Gnome connector, KDE Connect and power
# management on KDE Plasma.
dbus-user none
dbus-system none

# Allow drag and drop
dbus-user.talk org.freedesktop.portal.Documents
# Add the next line to firefox-common.local to enable native notifications.
#dbus-user.talk org.freedesktop.Notifications
# Add the next line to firefox-common.local to allow inhibiting screensavers.
#dbus-user.talk org.freedesktop.ScreenSaver
# Add the next lines to firefox-common.local for plasma browser integration.
#dbus-user.own org.mpris.MediaPlayer2.plasma-browser-integration
#dbus-user.talk org.kde.JobViewServer
#dbus-user.talk org.kde.kdeconnect
#dbus-user.talk org.kde.kuiserver
# Add the next line to firefox-common.local to allow screensharing under
# Wayland.
#dbus-user.talk org.freedesktop.portal.Desktop
# Also add the next line to firefox-common.local if screensharing does not work
# with the above lines (depends on the portal implementation).
#ignore noroot

#restrict-namespaces

firefox.local:

## whitelist /usr/share/glycin-loaders
noblacklist ${PATH}/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

ignore seccomp !chroot
seccomp !chroot,!mount,!pivot_root,!umount2

Here are the results of starting firefox from terminal:

❯ firefox
Reading profile /etc/firejail/firefox.profile
Reading profile /home/rsruser/.config/firejail/firefox.local
firejail version 0.9.76

Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Parent pid 54358, child pid 54362
Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set.
Private /etc installed in 27.16 ms
Base filesystem installed in 0.16 ms
Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Child process initialized in 47.63 ms
<!-- gh-comment-id:3378824911 --> @rsramkis commented on GitHub (Oct 7, 2025): > Yes, on the file provided. If you still get an error mentioning bwrap when you try to launch Firefox, add what I put above (1, 2, and 3) in my posted files. > > If it still doesn't work, you'll have to comment out the lines one by one to find the culprit. I went ahead and started commenting out lines for firefox.profile and firefox-common.profile. Anything I commented out has '##'. This is the configuration which lets me run firefox where the whitelist-usr-share-common.inc file is back to its default settings. Note that I had to comment out lines in the firefox.local configuration file too. <details> <summary>firefox.profile</summary> <p> ``` # Firejail profile for firefox # Description: Safe and easy web browser from Mozilla # This file is overwritten after every install/update # Persistent local customizations include firefox.local # Persistent global definitions include globals.local # Note: Sandboxing web browsers is as important as it is complex. Users might # be interested in creating custom profiles depending on the use case (e.g. one # for general browsing, another for banking, ...). Consult our FAQ/issue # tracker for more information. Here are a few links to get you going: # https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#firefox-doesnt-open-in-a-new-sandbox-instead-it-opens-a-new-tab-in-an-existing-firefox-instance # https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#how-do-i-run-two-instances-of-firefox # https://github.com/netblue30/firejail/issues/4206#issuecomment-824806968 # (Ignore entry from disable-common.inc) ignore read-only ${HOME}/.mozilla/firefox/profiles.ini noblacklist ${HOME}/.cache/mozilla noblacklist ${HOME}/.mozilla noblacklist ${RUNUSER}/*firefox* noblacklist ${RUNUSER}/psd/*firefox* blacklist /usr/libexec mkdir ${HOME}/.cache/mozilla/firefox mkdir ${HOME}/.mozilla whitelist ${HOME}/.cache/mozilla/firefox whitelist ${HOME}/.mozilla ## whitelist /usr/share/firefox ## whitelist /usr/share/gnome-shell/search-providers/firefox-search-provider.ini ## whitelist ${RUNUSER}/*firefox* ## whitelist ${RUNUSER}/psd/*firefox* # Note: Firefox requires a shell to launch on Arch and Fedora. # Add the next lines to firefox.local to enable private-bin. #private-bin bash,dbus-launch,dbus-send,env,firefox,sh,which #private-bin basename,bash,cat,dirname,expr,false,firefox,firefox-wayland,getenforce,ln,mkdir,pidof,restorecon,rm,rmdir,sed,sh,tclsh,true,uname private-etc firefox dbus-user filter dbus-user.own org.mozilla.* dbus-user.own org.mpris.MediaPlayer2.firefox.* ignore dbus-user none # Redirect ## include firefox-common.profile ``` </p> </details> <details> <summary>firefox-common.profile</summary> <p> ``` # Firejail profile for firefox-common # This file is overwritten after every install/update # Persistent local customizations include firefox-common.local # Persistent global definitions # added by caller profile #include globals.local # noexec ${HOME} breaks DRM binaries. ?BROWSER_ALLOW_DRM: ignore noexec ${HOME} # noexec ${RUNUSER} breaks DRM binaries when using profile-sync-daemon. ?BROWSER_ALLOW_DRM: ignore noexec ${RUNUSER} # Add the next lines to firefox-common.local if you want to use the migration # wizard. #noblacklist ${HOME}/.mozilla #whitelist ${HOME}/.mozilla # To enable support for the KeePassXC extension, add the following lines to # firefox-common.local. # Note: Start KeePassXC before the web browser and keep it open to allow # communication between them. #noblacklist ${RUNUSER}/app #whitelist ${RUNUSER}/app/org.keepassxc.KeePassXC #whitelist ${RUNUSER}/kpxc_server #whitelist ${RUNUSER}/org.keepassxc.KeePassXC.BrowserServer # Add the next line to firefox-common.local to allow access to common # programs/addons/plugins. #include firefox-common-addons.profile noblacklist ${HOME}/.local/share/pki noblacklist ${HOME}/.pki blacklist ${PATH}/curl blacklist ${PATH}/wget blacklist ${PATH}/wget2 include disable-common.inc include disable-devel.inc include disable-exec.inc include disable-interpreters.inc include disable-proc.inc include disable-programs.inc mkdir ${HOME}/.local/share/pki whitelist ${DOWNLOADS} whitelist ${HOME}/.local/share/pki whitelist ${HOME}/.pki ## whitelist /usr/share/doc ## whitelist /usr/share/gtk-doc/html ## whitelist /usr/share/mozilla ## whitelist /usr/share/webext include whitelist-common.inc include whitelist-run-common.inc include whitelist-runuser-common.inc ## include whitelist-usr-share-common.inc include whitelist-var-common.inc ## apparmor # Fixme! apparmor-replace caps.drop all # Note: machine-id breaks pulseaudio; add it to firefox-common.local if sound # is not required. #machine-id netfilter nodvd nogroups noinput nonewprivs # Note: noroot breaks GTK_USE_PORTAL=1 usage; see # https://github.com/netblue30/firejail/issues/2506. noroot notv ?BROWSER_DISABLE_U2F: nou2f protocol unix,inet,inet6,netlink # Note: The seccomp line below still permits the chroot syscall; see # https://github.com/netblue30/firejail/issues/2506 for possible workarounds. seccomp !chroot # Note: tracelog may break or cause major issues with many Firefox-based # browsers; see https://github.com/netblue30/firejail/issues/1930. #tracelog disable-mnt ?BROWSER_DISABLE_U2F: private-dev # Note: The private-etc line below works fine on most distributions but it # could cause problems on CentOS. private-etc @tls-ca,@x11,mailcap,mime.types,os-release private-tmp # Note: `dbus-user none` breaks various desktop integration features like # global menus, native notifications, Gnome connector, KDE Connect and power # management on KDE Plasma. dbus-user none dbus-system none # Allow drag and drop dbus-user.talk org.freedesktop.portal.Documents # Add the next line to firefox-common.local to enable native notifications. #dbus-user.talk org.freedesktop.Notifications # Add the next line to firefox-common.local to allow inhibiting screensavers. #dbus-user.talk org.freedesktop.ScreenSaver # Add the next lines to firefox-common.local for plasma browser integration. #dbus-user.own org.mpris.MediaPlayer2.plasma-browser-integration #dbus-user.talk org.kde.JobViewServer #dbus-user.talk org.kde.kdeconnect #dbus-user.talk org.kde.kuiserver # Add the next line to firefox-common.local to allow screensharing under # Wayland. #dbus-user.talk org.freedesktop.portal.Desktop # Also add the next line to firefox-common.local if screensharing does not work # with the above lines (depends on the portal implementation). #ignore noroot #restrict-namespaces ``` </p> </details> firefox.local: ``` ## whitelist /usr/share/glycin-loaders noblacklist ${PATH}/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ignore seccomp !chroot seccomp !chroot,!mount,!pivot_root,!umount2 ``` Here are the results of starting firefox from terminal: ``` ❯ firefox Reading profile /etc/firejail/firefox.profile Reading profile /home/rsruser/.config/firejail/firefox.local firejail version 0.9.76 Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Parent pid 54358, child pid 54362 Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set. Private /etc installed in 27.16 ms Base filesystem installed in 0.16 ms Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Child process initialized in 47.63 ms ```
Author
Owner

@Bundy01 commented on GitHub (Oct 7, 2025):

@rsramkis You commented out the line include firefox-common.profile, so your firefox-common.profile file is being ignored.

I recommend working directly on my files in ~/.config/firejail/firefox.profile and ~/.config/firejail/firefox-common.profile (that's what it's for)

When you find the problematic lines, uncomment them one by one to make sure they are all problematic.
Please post the result to help other users.

<!-- gh-comment-id:3378929552 --> @Bundy01 commented on GitHub (Oct 7, 2025): @rsramkis You commented out the line `include firefox-common.profile`, so your firefox-common.profile file is being ignored. I recommend working directly on my files in `~/.config/firejail/firefox.profile` and `~/.config/firejail/firefox-common.profile` (that's what it's for) When you find the problematic lines, uncomment them one by one to make sure they are all problematic. Please post the result to help other users.
Author
Owner

@rsramkis commented on GitHub (Oct 7, 2025):

@rsramkis You commented out the line include firefox-common.profile, so your firefox-common.profile file is being ignored.

I recommend working directly on my files in ~/.config/firejail/firefox.profile and ~/.config/firejail/firefox-common.profile (that's what it's for)

When you find the problematic lines, uncomment them one by one to make sure they are all problematic. Please post the result to help other users.

Correction. I just un-commented the firefox-common.profile. This is the results with firefox running successfully with the above stated configuration:

firefox run

❯ firefox
Reading profile /etc/firejail/firefox.profile
Reading profile /home/rsruser/.config/firejail/firefox.local
Reading profile /etc/firejail/firefox-common.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-devel.inc
Reading profile /etc/firejail/disable-exec.inc
Reading profile /etc/firejail/disable-interpreters.inc
Reading profile /etc/firejail/disable-proc.inc
Reading profile /etc/firejail/disable-programs.inc
Reading profile /etc/firejail/whitelist-common.inc
Reading profile /etc/firejail/whitelist-run-common.inc
Reading profile /etc/firejail/whitelist-runuser-common.inc
Reading profile /etc/firejail/whitelist-var-common.inc
firejail version 0.9.76

Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Parent pid 59442, child pid 59446
Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set.
Private /etc installed in 75.25 ms
Warning: /sbin directory link was not blacklisted
Warning: /usr/sbin directory link was not blacklisted
Base filesystem installed in 210.38 ms
Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior.
Warning: Cannot confine the application using AppArmor.
Maybe firejail-default AppArmor profile is not loaded into the kernel.
As root, run "aa-enforce firejail-default" to load it.
Child process initialized in 381.37 ms

Parent is shutting down, bye...

Since the results are proving that the profile files being read from /etc/firejail, I don't feel there is a need to move them to my home directory. Additionally I did temporarily replace my profile file with your copies of firefox.profile and firefox-common.profile which showed that firefox was still crashing. I did use MELD to compare your files to make sure I could check for where no changes were made.

Before I started the uncommenting testing I reversed out all changes to get myself back to a vanilla setup (with the Arch Repository files).

One other thing I noticed as I was re-testing now:

  • Notice I commented out "whitelist /usr/share/glycin-loaders" from the firefox.local to get firefox to run?
  • I then move the line to /etc/firejail/whitelist-usr-share-common.inc:
## https://github.com/netblue30/firejail/issues/6906
whitelist /usr/share/glycin-loaders

When I ran firefox again I got:

firefox run

❯ firefox
Reading profile /etc/firejail/firefox.profile
Reading profile /home/rsruser/.config/firejail/firefox.local
Reading profile /etc/firejail/firefox-common.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-devel.inc
Reading profile /etc/firejail/disable-exec.inc
Reading profile /etc/firejail/disable-interpreters.inc
Reading profile /etc/firejail/disable-proc.inc
Reading profile /etc/firejail/disable-programs.inc
Reading profile /etc/firejail/whitelist-common.inc
Reading profile /etc/firejail/whitelist-run-common.inc
Reading profile /etc/firejail/whitelist-runuser-common.inc
Reading profile /etc/firejail/whitelist-var-common.inc
firejail version 0.9.76

Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Parent pid 60462, child pid 60466
Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set.
Private /etc installed in 64.60 ms
Warning: /sbin directory link was not blacklisted
Warning: /usr/sbin directory link was not blacklisted
Base filesystem installed in 161.70 ms
Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown,
Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior.
Warning: Cannot confine the application using AppArmor.
Maybe firejail-default AppArmor profile is not loaded into the kernel.
As root, run "aa-enforce firejail-default" to load it.
Child process initialized in 307.82 ms

Parent is shutting down, bye...

Rebooted and confirmed the results. My guess is that since apparmor is not loaded because I commented it out in the firefox-common.profile. This is why we get the below output and firefox runs. Just no competing sandbox.

Warning: Cannot confine the application using AppArmor.
Maybe firejail-default AppArmor profile is not loaded into the kernel.
As root, run "aa-enforce firejail-default" to load it.
<!-- gh-comment-id:3378971230 --> @rsramkis commented on GitHub (Oct 7, 2025): > [@rsramkis](https://github.com/rsramkis) You commented out the line `include firefox-common.profile`, so your firefox-common.profile file is being ignored. > > I recommend working directly on my files in `~/.config/firejail/firefox.profile` and `~/.config/firejail/firefox-common.profile` (that's what it's for) > > When you find the problematic lines, uncomment them one by one to make sure they are all problematic. Please post the result to help other users. Correction. I just un-commented the firefox-common.profile. This is the results with firefox running successfully with the above stated configuration: <details> <summary>firefox run</summary> <p> ``` ❯ firefox Reading profile /etc/firejail/firefox.profile Reading profile /home/rsruser/.config/firejail/firefox.local Reading profile /etc/firejail/firefox-common.profile Reading profile /etc/firejail/disable-common.inc Reading profile /etc/firejail/disable-devel.inc Reading profile /etc/firejail/disable-exec.inc Reading profile /etc/firejail/disable-interpreters.inc Reading profile /etc/firejail/disable-proc.inc Reading profile /etc/firejail/disable-programs.inc Reading profile /etc/firejail/whitelist-common.inc Reading profile /etc/firejail/whitelist-run-common.inc Reading profile /etc/firejail/whitelist-runuser-common.inc Reading profile /etc/firejail/whitelist-var-common.inc firejail version 0.9.76 Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Parent pid 59442, child pid 59446 Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set. Private /etc installed in 75.25 ms Warning: /sbin directory link was not blacklisted Warning: /usr/sbin directory link was not blacklisted Base filesystem installed in 210.38 ms Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior. Warning: Cannot confine the application using AppArmor. Maybe firejail-default AppArmor profile is not loaded into the kernel. As root, run "aa-enforce firejail-default" to load it. Child process initialized in 381.37 ms Parent is shutting down, bye... ``` </p> </details> Since the results are proving that the profile files being read from /etc/firejail, I don't feel there is a need to move them to my home directory. Additionally I did temporarily replace my profile file with your copies of firefox.profile and firefox-common.profile which showed that firefox was still crashing. I did use MELD to compare your files to make sure I could check for where no changes were made. Before I started the uncommenting testing I reversed out all changes to get myself back to a vanilla setup (with the Arch Repository files). One other thing I noticed as I was re-testing now: - Notice I commented out "whitelist /usr/share/glycin-loaders" from the firefox.local to get firefox to run? - I then move the line to /etc/firejail/whitelist-usr-share-common.inc: ``` ## https://github.com/netblue30/firejail/issues/6906 whitelist /usr/share/glycin-loaders ``` When I ran firefox again I got: <details> <summary>firefox run</summary> <p> ``` ❯ firefox Reading profile /etc/firejail/firefox.profile Reading profile /home/rsruser/.config/firejail/firefox.local Reading profile /etc/firejail/firefox-common.profile Reading profile /etc/firejail/disable-common.inc Reading profile /etc/firejail/disable-devel.inc Reading profile /etc/firejail/disable-exec.inc Reading profile /etc/firejail/disable-interpreters.inc Reading profile /etc/firejail/disable-proc.inc Reading profile /etc/firejail/disable-programs.inc Reading profile /etc/firejail/whitelist-common.inc Reading profile /etc/firejail/whitelist-run-common.inc Reading profile /etc/firejail/whitelist-runuser-common.inc Reading profile /etc/firejail/whitelist-var-common.inc firejail version 0.9.76 Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Parent pid 60462, child pid 60466 Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set. Private /etc installed in 64.60 ms Warning: /sbin directory link was not blacklisted Warning: /usr/sbin directory link was not blacklisted Base filesystem installed in 161.70 ms Seccomp list in: !chroot,!mount,!pivot_root,!umount2, check list: @default-keep, prelist: unknown,unknown,unknown,unknown, Warning: Replacing profile instead of stacking it. It is a legacy behavior that can result in relaxation of the protection. It is here as a temporary measure to unbreak the software that has been broken by switching to the stacking behavior. Warning: Cannot confine the application using AppArmor. Maybe firejail-default AppArmor profile is not loaded into the kernel. As root, run "aa-enforce firejail-default" to load it. Child process initialized in 307.82 ms Parent is shutting down, bye... ``` </p> </details> Rebooted and confirmed the results. My guess is that since apparmor is not loaded because I commented it out in the firefox-common.profile. This is why we get the below output and firefox runs. Just no competing sandbox. ``` Warning: Cannot confine the application using AppArmor. Maybe firejail-default AppArmor profile is not loaded into the kernel. As root, run "aa-enforce firejail-default" to load it. ```
Author
Owner

@Bundy01 commented on GitHub (Oct 7, 2025):

Copying the profiles from /etc/firejail to ~/.config/firejail allows you to keep your changes. Otherwise, they will be overwritten by a Firejail update (local files take priority over /etc).

If I understand your changes correctly, you commented out the lines whitelist /usr/share/*, whitelist ${RUNUSER}/*, and apparmor. + firefox.local file.

Perhaps there is a file that Firefox needs in /usr/share that is not listed in whitelist-usr-share-common.inc.

However, I checked this file locally and only added the line whitelist /usr/share/glycin-loaders. I don't understand why it works for me and didn't work for you (same version of Firefox and Firejail).

Last question: Can you confirm that all these lines are necessary to launch Firefox?

noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

ignore seccomp !chroot
seccomp !chroot,!mount,!pivot_root,!umount2
<!-- gh-comment-id:3379046460 --> @Bundy01 commented on GitHub (Oct 7, 2025): Copying the profiles from /etc/firejail to ~/.config/firejail allows you to keep your changes. Otherwise, they will be overwritten by a Firejail update (local files take priority over /etc). If I understand your changes correctly, you commented out the lines `whitelist /usr/share/*`, `whitelist ${RUNUSER}/*`, and `apparmor`. + firefox.local file. Perhaps there is a file that Firefox needs in /usr/share that is not listed in `whitelist-usr-share-common.inc`. However, I checked this file locally and only added the line `whitelist /usr/share/glycin-loaders`. I don't understand why it works for me and didn't work for you (same version of Firefox and Firejail). Last question: Can you confirm that all these lines are necessary to launch Firefox? ```console noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ignore seccomp !chroot seccomp !chroot,!mount,!pivot_root,!umount2 ```
Author
Owner

@rsramkis commented on GitHub (Oct 8, 2025):

Due to the complexity of my configuration files I will re-share them below at the working state (as I see come mistakes in your summary above e.g. firefox.local is not commented out):

firefox.local:

# https://github.com/netblue30/firejail/issues/6906
## whitelist /usr/share/glycin-loaders
noblacklist ${PATH}/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

ignore seccomp !chroot
seccomp !chroot,!mount,!pivot_root,!umount2
firefox.profile

# Firejail profile for firefox
# Description: Safe and easy web browser from Mozilla
# This file is overwritten after every install/update
# Persistent local customizations
include firefox.local
# Persistent global definitions
include globals.local

# Note: Sandboxing web browsers is as important as it is complex. Users might
# be interested in creating custom profiles depending on the use case (e.g. one
# for general browsing, another for banking, ...). Consult our FAQ/issue
# tracker for more information. Here are a few links to get you going:
# https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#firefox-doesnt-open-in-a-new-sandbox-instead-it-opens-a-new-tab-in-an-existing-firefox-instance
# https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#how-do-i-run-two-instances-of-firefox
# https://github.com/netblue30/firejail/issues/4206#issuecomment-824806968

# (Ignore entry from disable-common.inc)
ignore read-only ${HOME}/.mozilla/firefox/profiles.ini

noblacklist ${HOME}/.cache/mozilla
noblacklist ${HOME}/.mozilla
noblacklist ${RUNUSER}/*firefox*
noblacklist ${RUNUSER}/psd/*firefox*

blacklist /usr/libexec

mkdir ${HOME}/.cache/mozilla/firefox
mkdir ${HOME}/.mozilla
whitelist ${HOME}/.cache/mozilla/firefox
whitelist ${HOME}/.mozilla

## whitelist /usr/share/firefox
## whitelist /usr/share/gnome-shell/search-providers/firefox-search-provider.ini
## whitelist ${RUNUSER}/*firefox*
## whitelist ${RUNUSER}/psd/*firefox*

# Note: Firefox requires a shell to launch on Arch and Fedora.
# Add the next lines to firefox.local to enable private-bin.
#private-bin bash,dbus-launch,dbus-send,env,firefox,sh,which
#private-bin basename,bash,cat,dirname,expr,false,firefox,firefox-wayland,getenforce,ln,mkdir,pidof,restorecon,rm,rmdir,sed,sh,tclsh,true,uname
private-etc firefox

dbus-user filter
dbus-user.own org.mozilla.*
dbus-user.own org.mpris.MediaPlayer2.firefox.*
ignore dbus-user none

# Redirect
include firefox-common.profile

firefox-common.profile

# Firejail profile for firefox-common
# This file is overwritten after every install/update
# Persistent local customizations
include firefox-common.local
# Persistent global definitions
# added by caller profile
#include globals.local

# noexec ${HOME} breaks DRM binaries.
?BROWSER_ALLOW_DRM: ignore noexec ${HOME}
# noexec ${RUNUSER} breaks DRM binaries when using profile-sync-daemon.
?BROWSER_ALLOW_DRM: ignore noexec ${RUNUSER}

# Add the next lines to firefox-common.local if you want to use the migration
# wizard.
#noblacklist ${HOME}/.mozilla
#whitelist ${HOME}/.mozilla

# To enable support for the KeePassXC extension, add the following lines to
# firefox-common.local.
# Note: Start KeePassXC before the web browser and keep it open to allow
# communication between them.
#noblacklist ${RUNUSER}/app
#whitelist ${RUNUSER}/app/org.keepassxc.KeePassXC
#whitelist ${RUNUSER}/kpxc_server
#whitelist ${RUNUSER}/org.keepassxc.KeePassXC.BrowserServer

# Add the next line to firefox-common.local to allow access to common
# programs/addons/plugins.
#include firefox-common-addons.profile

noblacklist ${HOME}/.local/share/pki
noblacklist ${HOME}/.pki

blacklist ${PATH}/curl
blacklist ${PATH}/wget
blacklist ${PATH}/wget2

include disable-common.inc
include disable-devel.inc
include disable-exec.inc
include disable-interpreters.inc
include disable-proc.inc
include disable-programs.inc

mkdir ${HOME}/.local/share/pki
whitelist ${DOWNLOADS}
whitelist ${HOME}/.local/share/pki
whitelist ${HOME}/.pki
## whitelist /usr/share/doc
## whitelist /usr/share/gtk-doc/html
## whitelist /usr/share/mozilla
## whitelist /usr/share/webext
include whitelist-common.inc
include whitelist-run-common.inc
include whitelist-runuser-common.inc
## include whitelist-usr-share-common.inc
include whitelist-var-common.inc

## apparmor
# Fixme!
apparmor-replace
caps.drop all
# Note: machine-id breaks pulseaudio; add it to firefox-common.local if sound
# is not required.
#machine-id
netfilter
nodvd
nogroups
noinput
nonewprivs
# Note: noroot breaks GTK_USE_PORTAL=1 usage; see
# https://github.com/netblue30/firejail/issues/2506.
noroot
notv
?BROWSER_DISABLE_U2F: nou2f
protocol unix,inet,inet6,netlink
# Note: The seccomp line below still permits the chroot syscall; see
# https://github.com/netblue30/firejail/issues/2506 for possible workarounds.
seccomp !chroot
# Note: tracelog may break or cause major issues with many Firefox-based
# browsers; see https://github.com/netblue30/firejail/issues/1930.
#tracelog

disable-mnt
?BROWSER_DISABLE_U2F: private-dev
# Note: The private-etc line below works fine on most distributions but it
# could cause problems on CentOS.
private-etc @tls-ca,@x11,mailcap,mime.types,os-release
private-tmp

# Note: `dbus-user none` breaks various desktop integration features like
# global menus, native notifications, Gnome connector, KDE Connect and power
# management on KDE Plasma.
dbus-user none
dbus-system none

# Allow drag and drop
dbus-user.talk org.freedesktop.portal.Documents
# Add the next line to firefox-common.local to enable native notifications.
#dbus-user.talk org.freedesktop.Notifications
# Add the next line to firefox-common.local to allow inhibiting screensavers.
#dbus-user.talk org.freedesktop.ScreenSaver
# Add the next lines to firefox-common.local for plasma browser integration.
#dbus-user.own org.mpris.MediaPlayer2.plasma-browser-integration
#dbus-user.talk org.kde.JobViewServer
#dbus-user.talk org.kde.kdeconnect
#dbus-user.talk org.kde.kuiserver
# Add the next line to firefox-common.local to allow screensharing under
# Wayland.
#dbus-user.talk org.freedesktop.portal.Desktop
# Also add the next line to firefox-common.local if screensharing does not work
# with the above lines (depends on the portal implementation).
#ignore noroot

#restrict-namespaces

whitelist-usr-share-common.inc

# This file is overwritten during software install.
# Persistent customizations should go in a .local file.
include whitelist-usr-share-common.local

# common /usr/share whitelist for all profiles

whitelist /usr/share/alsa
whitelist /usr/share/applications
whitelist /usr/share/ca-certificates
whitelist /usr/share/crypto-policies
whitelist /usr/share/cursors
whitelist /usr/share/dconf
whitelist /usr/share/distro-info
whitelist /usr/share/drirc.d
whitelist /usr/share/egl
whitelist /usr/share/enchant
whitelist /usr/share/enchant-2
whitelist /usr/share/file
whitelist /usr/share/fontconfig
whitelist /usr/share/fonts
whitelist /usr/share/fonts-config
whitelist /usr/share/gir-1.0
whitelist /usr/share/gjs-1.0
whitelist /usr/share/glib-2.0
whitelist /usr/share/glvnd
whitelist /usr/share/gtk-2.0
whitelist /usr/share/gtk-3.0
whitelist /usr/share/gtk-engines
whitelist /usr/share/gtksourceview-3.0
whitelist /usr/share/gtksourceview-4
whitelist /usr/share/hunspell
whitelist /usr/share/hyphen
whitelist /usr/share/hwdata
whitelist /usr/share/icons
whitelist /usr/share/icu
whitelist /usr/share/knotifications5
whitelist /usr/share/kservices5
whitelist /usr/share/Kvantum
whitelist /usr/share/kxmlgui5
whitelist /usr/share/libdrm
whitelist /usr/share/libthai
whitelist /usr/share/locale
whitelist /usr/share/locale-langpack
whitelist /usr/share/mime
whitelist /usr/share/misc
whitelist /usr/share/Modules
whitelist /usr/share/myspell
whitelist /usr/share/p11-kit
whitelist /usr/share/perl
whitelist /usr/share/perl5
whitelist /usr/share/pipewire
whitelist /usr/share/pixmaps
whitelist /usr/share/pki
whitelist /usr/share/plasma
whitelist /usr/share/publicsuffix
whitelist /usr/share/qt
whitelist /usr/share/qt4
whitelist /usr/share/qt5
whitelist /usr/share/qt5ct
whitelist /usr/share/qt6
whitelist /usr/share/qt6ct
whitelist /usr/share/sounds
whitelist /usr/share/tcl8.6
whitelist /usr/share/tcltk
whitelist /usr/share/terminfo
whitelist /usr/share/texlive
whitelist /usr/share/texmf
whitelist /usr/share/themes
whitelist /usr/share/thumbnail.so
whitelist /usr/share/uim
whitelist /usr/share/vulkan
whitelist /usr/share/X11
whitelist /usr/share/xkeyboard-config-2
whitelist /usr/share/xml
whitelist /usr/share/zenity
whitelist /usr/share/zoneinfo

## https://github.com/netblue30/firejail/issues/6906
whitelist /usr/share/glycin-loaders

<!-- gh-comment-id:3379203132 --> @rsramkis commented on GitHub (Oct 8, 2025): Due to the complexity of my configuration files I will re-share them below at the working state (as I see come mistakes in your summary above e.g. firefox.local is not commented out): firefox.local: ``` # https://github.com/netblue30/firejail/issues/6906 ## whitelist /usr/share/glycin-loaders noblacklist ${PATH}/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ignore seccomp !chroot seccomp !chroot,!mount,!pivot_root,!umount2 ``` <details> <summary>firefox.profile</summary> <p> ``` # Firejail profile for firefox # Description: Safe and easy web browser from Mozilla # This file is overwritten after every install/update # Persistent local customizations include firefox.local # Persistent global definitions include globals.local # Note: Sandboxing web browsers is as important as it is complex. Users might # be interested in creating custom profiles depending on the use case (e.g. one # for general browsing, another for banking, ...). Consult our FAQ/issue # tracker for more information. Here are a few links to get you going: # https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#firefox-doesnt-open-in-a-new-sandbox-instead-it-opens-a-new-tab-in-an-existing-firefox-instance # https://github.com/netblue30/firejail/wiki/Frequently-Asked-Questions#how-do-i-run-two-instances-of-firefox # https://github.com/netblue30/firejail/issues/4206#issuecomment-824806968 # (Ignore entry from disable-common.inc) ignore read-only ${HOME}/.mozilla/firefox/profiles.ini noblacklist ${HOME}/.cache/mozilla noblacklist ${HOME}/.mozilla noblacklist ${RUNUSER}/*firefox* noblacklist ${RUNUSER}/psd/*firefox* blacklist /usr/libexec mkdir ${HOME}/.cache/mozilla/firefox mkdir ${HOME}/.mozilla whitelist ${HOME}/.cache/mozilla/firefox whitelist ${HOME}/.mozilla ## whitelist /usr/share/firefox ## whitelist /usr/share/gnome-shell/search-providers/firefox-search-provider.ini ## whitelist ${RUNUSER}/*firefox* ## whitelist ${RUNUSER}/psd/*firefox* # Note: Firefox requires a shell to launch on Arch and Fedora. # Add the next lines to firefox.local to enable private-bin. #private-bin bash,dbus-launch,dbus-send,env,firefox,sh,which #private-bin basename,bash,cat,dirname,expr,false,firefox,firefox-wayland,getenforce,ln,mkdir,pidof,restorecon,rm,rmdir,sed,sh,tclsh,true,uname private-etc firefox dbus-user filter dbus-user.own org.mozilla.* dbus-user.own org.mpris.MediaPlayer2.firefox.* ignore dbus-user none # Redirect include firefox-common.profile ``` </p> </details> <details> <summary>firefox-common.profile</summary> <p> ``` # Firejail profile for firefox-common # This file is overwritten after every install/update # Persistent local customizations include firefox-common.local # Persistent global definitions # added by caller profile #include globals.local # noexec ${HOME} breaks DRM binaries. ?BROWSER_ALLOW_DRM: ignore noexec ${HOME} # noexec ${RUNUSER} breaks DRM binaries when using profile-sync-daemon. ?BROWSER_ALLOW_DRM: ignore noexec ${RUNUSER} # Add the next lines to firefox-common.local if you want to use the migration # wizard. #noblacklist ${HOME}/.mozilla #whitelist ${HOME}/.mozilla # To enable support for the KeePassXC extension, add the following lines to # firefox-common.local. # Note: Start KeePassXC before the web browser and keep it open to allow # communication between them. #noblacklist ${RUNUSER}/app #whitelist ${RUNUSER}/app/org.keepassxc.KeePassXC #whitelist ${RUNUSER}/kpxc_server #whitelist ${RUNUSER}/org.keepassxc.KeePassXC.BrowserServer # Add the next line to firefox-common.local to allow access to common # programs/addons/plugins. #include firefox-common-addons.profile noblacklist ${HOME}/.local/share/pki noblacklist ${HOME}/.pki blacklist ${PATH}/curl blacklist ${PATH}/wget blacklist ${PATH}/wget2 include disable-common.inc include disable-devel.inc include disable-exec.inc include disable-interpreters.inc include disable-proc.inc include disable-programs.inc mkdir ${HOME}/.local/share/pki whitelist ${DOWNLOADS} whitelist ${HOME}/.local/share/pki whitelist ${HOME}/.pki ## whitelist /usr/share/doc ## whitelist /usr/share/gtk-doc/html ## whitelist /usr/share/mozilla ## whitelist /usr/share/webext include whitelist-common.inc include whitelist-run-common.inc include whitelist-runuser-common.inc ## include whitelist-usr-share-common.inc include whitelist-var-common.inc ## apparmor # Fixme! apparmor-replace caps.drop all # Note: machine-id breaks pulseaudio; add it to firefox-common.local if sound # is not required. #machine-id netfilter nodvd nogroups noinput nonewprivs # Note: noroot breaks GTK_USE_PORTAL=1 usage; see # https://github.com/netblue30/firejail/issues/2506. noroot notv ?BROWSER_DISABLE_U2F: nou2f protocol unix,inet,inet6,netlink # Note: The seccomp line below still permits the chroot syscall; see # https://github.com/netblue30/firejail/issues/2506 for possible workarounds. seccomp !chroot # Note: tracelog may break or cause major issues with many Firefox-based # browsers; see https://github.com/netblue30/firejail/issues/1930. #tracelog disable-mnt ?BROWSER_DISABLE_U2F: private-dev # Note: The private-etc line below works fine on most distributions but it # could cause problems on CentOS. private-etc @tls-ca,@x11,mailcap,mime.types,os-release private-tmp # Note: `dbus-user none` breaks various desktop integration features like # global menus, native notifications, Gnome connector, KDE Connect and power # management on KDE Plasma. dbus-user none dbus-system none # Allow drag and drop dbus-user.talk org.freedesktop.portal.Documents # Add the next line to firefox-common.local to enable native notifications. #dbus-user.talk org.freedesktop.Notifications # Add the next line to firefox-common.local to allow inhibiting screensavers. #dbus-user.talk org.freedesktop.ScreenSaver # Add the next lines to firefox-common.local for plasma browser integration. #dbus-user.own org.mpris.MediaPlayer2.plasma-browser-integration #dbus-user.talk org.kde.JobViewServer #dbus-user.talk org.kde.kdeconnect #dbus-user.talk org.kde.kuiserver # Add the next line to firefox-common.local to allow screensharing under # Wayland. #dbus-user.talk org.freedesktop.portal.Desktop # Also add the next line to firefox-common.local if screensharing does not work # with the above lines (depends on the portal implementation). #ignore noroot #restrict-namespaces ``` </p> </details> <details> <summary>whitelist-usr-share-common.inc</summary> <p> ``` # This file is overwritten during software install. # Persistent customizations should go in a .local file. include whitelist-usr-share-common.local # common /usr/share whitelist for all profiles whitelist /usr/share/alsa whitelist /usr/share/applications whitelist /usr/share/ca-certificates whitelist /usr/share/crypto-policies whitelist /usr/share/cursors whitelist /usr/share/dconf whitelist /usr/share/distro-info whitelist /usr/share/drirc.d whitelist /usr/share/egl whitelist /usr/share/enchant whitelist /usr/share/enchant-2 whitelist /usr/share/file whitelist /usr/share/fontconfig whitelist /usr/share/fonts whitelist /usr/share/fonts-config whitelist /usr/share/gir-1.0 whitelist /usr/share/gjs-1.0 whitelist /usr/share/glib-2.0 whitelist /usr/share/glvnd whitelist /usr/share/gtk-2.0 whitelist /usr/share/gtk-3.0 whitelist /usr/share/gtk-engines whitelist /usr/share/gtksourceview-3.0 whitelist /usr/share/gtksourceview-4 whitelist /usr/share/hunspell whitelist /usr/share/hyphen whitelist /usr/share/hwdata whitelist /usr/share/icons whitelist /usr/share/icu whitelist /usr/share/knotifications5 whitelist /usr/share/kservices5 whitelist /usr/share/Kvantum whitelist /usr/share/kxmlgui5 whitelist /usr/share/libdrm whitelist /usr/share/libthai whitelist /usr/share/locale whitelist /usr/share/locale-langpack whitelist /usr/share/mime whitelist /usr/share/misc whitelist /usr/share/Modules whitelist /usr/share/myspell whitelist /usr/share/p11-kit whitelist /usr/share/perl whitelist /usr/share/perl5 whitelist /usr/share/pipewire whitelist /usr/share/pixmaps whitelist /usr/share/pki whitelist /usr/share/plasma whitelist /usr/share/publicsuffix whitelist /usr/share/qt whitelist /usr/share/qt4 whitelist /usr/share/qt5 whitelist /usr/share/qt5ct whitelist /usr/share/qt6 whitelist /usr/share/qt6ct whitelist /usr/share/sounds whitelist /usr/share/tcl8.6 whitelist /usr/share/tcltk whitelist /usr/share/terminfo whitelist /usr/share/texlive whitelist /usr/share/texmf whitelist /usr/share/themes whitelist /usr/share/thumbnail.so whitelist /usr/share/uim whitelist /usr/share/vulkan whitelist /usr/share/X11 whitelist /usr/share/xkeyboard-config-2 whitelist /usr/share/xml whitelist /usr/share/zenity whitelist /usr/share/zoneinfo ## https://github.com/netblue30/firejail/issues/6906 whitelist /usr/share/glycin-loaders ``` </p> </details>
Author
Owner

@ilikenwf commented on GitHub (Oct 8, 2025):

Well this breaks lots of things for me...librewolf/firefox save dialog, signal save dialog, transmission-remote dialog...

There a workaround yet? On arch there is this maybe https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin

edit: the package above fixes it

<!-- gh-comment-id:3379591683 --> @ilikenwf commented on GitHub (Oct 8, 2025): Well this breaks lots of things for me...librewolf/firefox save dialog, signal save dialog, transmission-remote dialog... There a workaround yet? On arch there is this maybe https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin edit: the package above fixes it
Author
Owner

@ilikenwf commented on GitHub (Oct 8, 2025):

I attempted that potential fix specific to my system, to librewolf, but for one the file paths vary by distro in 1-2 cases and it didn't actually work here.

<!-- gh-comment-id:3382225685 --> @ilikenwf commented on GitHub (Oct 8, 2025): I attempted that potential fix specific to my system, to librewolf, but for one the file paths vary by distro in 1-2 cases and it didn't actually work here.
Author
Owner

@rsramkis commented on GitHub (Oct 8, 2025):

Hi Bundy,

I was thinking about the issue and I wanted to compare notes on the setup you are testing on:

  1. Can you provide the Distro, Desktop and Kernel version.

  2. Can you run the two commands from your terminal:

a. sudo aa-enabled to verify apparmor is enabled.

b. sudo aa-status to get your apparmor status.

Mine:

apparmor commands

❯ sudo aa-enabled
Yes

❯ sudo aa-status
[sudo] password for rsruser:
apparmor module is loaded.
162 profiles are loaded.
79 profiles are in enforce mode.
   /usr/lib/apache2/mpm-prefork/apache2
   /usr/lib/apache2/mpm-prefork/apache2//DEFAULT_URI
   /usr/lib/apache2/mpm-prefork/apache2//HANDLING_UNTRUSTED_INPUT
   /usr/lib/apache2/mpm-prefork/apache2//phpsysinfo
   apache2
   apache2//DEFAULT_URI
   apache2//HANDLING_UNTRUSTED_INPUT
   apache2//phpsysinfo
   avahi-daemon
   dnsmasq
   dnsmasq//libvirt_leaseshelper
   dovecot
   dovecot-anvil
   dovecot-auth
   dovecot-config
   dovecot-deliver
   dovecot-dict
   dovecot-director
   dovecot-doveadm-server
   dovecot-dovecot-auth
   dovecot-dovecot-lda
   dovecot-dovecot-lda//sendmail
   dovecot-imap
   dovecot-imap-login
   dovecot-lmtp
   dovecot-log
   dovecot-managesieve
   dovecot-managesieve-login
   dovecot-pop3
   dovecot-pop3-login
   dovecot-replicator
   dovecot-script-login
   dovecot-ssl-params
   dovecot-stats
   firejail-default
   identd
   klogd
   lsb_release
   mdnsd
   nmbd
   nscd
   ntpd
   nvidia_modprobe
   nvidia_modprobe//kmod
   php-fpm
   ping
   plasmashell
   plasmashell//QtWebEngineProcess
   samba-bgqd
   samba-dcerpcd
   samba-rpcd
   samba-rpcd-classic
   samba-rpcd-spoolss
   sbuild
   sbuild-abort
   sbuild-adduser
   sbuild-apt
   sbuild-checkpackages
   sbuild-clean
   sbuild-createchroot
   sbuild-destroychroot
   sbuild-distupgrade
   sbuild-hold
   sbuild-shell
   sbuild-unhold
   sbuild-update
   sbuild-upgrade
   smbd
   smbldap-useradd
   smbldap-useradd///etc/init.d/nscd
   syslog-ng
   syslogd
   traceroute
   unix-chkpwd
   unprivileged_userns
   winbindd
   zgrep
   zgrep//helper
   zgrep//sed
5 profiles are in complain mode.
   Xorg
   transmission-cli
   transmission-daemon
   transmission-gtk
   transmission-qt
0 profiles are in prompt mode.
0 profiles are in kill mode.
78 profiles are in unconfined mode.
   1password
   Discord
   MongoDB Compass
   QtWebEngineProcess
   balena-etcher
   brave
   buildah
   busybox
   cam
   ch-checkns
   ch-run
   chrome
   chromium
   crun
   devhelp
   element-desktop
   epiphany
   evolution
   firefox
   flatpak
   foliate
   geary
   github-desktop
   goldendict
   ipa_verify
   kchmviewer
   keybase
   lc-compliance
   libcamerify
   linux-sandbox
   loupe
   lxc-attach
   lxc-create
   lxc-destroy
   lxc-execute
   lxc-stop
   lxc-unshare
   lxc-usernsexec
   mmdebstrap
   msedge
   nautilus
   notepadqq
   obsidian
   opam
   opera
   pageedit
   podman
   polypane
   privacybrowser
   qcam
   qmapshack
   qutebrowser
   rootlesskit
   rpm
   rssguard
   runc
   scide
   signal-desktop
   slack
   slirp4netns
   steam
   stress-ng
   surfshark
   systemd-coredump
   thunderbird
   toybox
   trinity
   tup
   tuxedo-control-center
   userbindmount
   uwsgi-core
   vdens
   virtiofsd
   vivaldi-bin
   vpnns
   vscode
   wike
   wpcom
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are in prompt mode.
0 processes are in kill mode.
0 processes are unconfined but have a profile defined.
0 processes are in mixed mode.

  1. Did you enable apparmor via a kernel string?
    Mine is in the kernel string via grub

Source: https://wiki.archlinux.org/title/AppArmor

  1. Can you share your whitelist-usr-share-common.inc configuration file?

Thanks

<!-- gh-comment-id:3382272817 --> @rsramkis commented on GitHub (Oct 8, 2025): Hi Bundy, I was thinking about the issue and I wanted to compare notes on the setup you are testing on: 1. Can you provide the Distro, Desktop and Kernel version. 2. Can you run the two commands from your terminal: a. `sudo aa-enabled` to verify apparmor is enabled. b. `sudo aa-status` to get your apparmor status. Mine: <details> <summary>apparmor commands</summary> <p> ``` ❯ sudo aa-enabled Yes ❯ sudo aa-status [sudo] password for rsruser: apparmor module is loaded. 162 profiles are loaded. 79 profiles are in enforce mode. /usr/lib/apache2/mpm-prefork/apache2 /usr/lib/apache2/mpm-prefork/apache2//DEFAULT_URI /usr/lib/apache2/mpm-prefork/apache2//HANDLING_UNTRUSTED_INPUT /usr/lib/apache2/mpm-prefork/apache2//phpsysinfo apache2 apache2//DEFAULT_URI apache2//HANDLING_UNTRUSTED_INPUT apache2//phpsysinfo avahi-daemon dnsmasq dnsmasq//libvirt_leaseshelper dovecot dovecot-anvil dovecot-auth dovecot-config dovecot-deliver dovecot-dict dovecot-director dovecot-doveadm-server dovecot-dovecot-auth dovecot-dovecot-lda dovecot-dovecot-lda//sendmail dovecot-imap dovecot-imap-login dovecot-lmtp dovecot-log dovecot-managesieve dovecot-managesieve-login dovecot-pop3 dovecot-pop3-login dovecot-replicator dovecot-script-login dovecot-ssl-params dovecot-stats firejail-default identd klogd lsb_release mdnsd nmbd nscd ntpd nvidia_modprobe nvidia_modprobe//kmod php-fpm ping plasmashell plasmashell//QtWebEngineProcess samba-bgqd samba-dcerpcd samba-rpcd samba-rpcd-classic samba-rpcd-spoolss sbuild sbuild-abort sbuild-adduser sbuild-apt sbuild-checkpackages sbuild-clean sbuild-createchroot sbuild-destroychroot sbuild-distupgrade sbuild-hold sbuild-shell sbuild-unhold sbuild-update sbuild-upgrade smbd smbldap-useradd smbldap-useradd///etc/init.d/nscd syslog-ng syslogd traceroute unix-chkpwd unprivileged_userns winbindd zgrep zgrep//helper zgrep//sed 5 profiles are in complain mode. Xorg transmission-cli transmission-daemon transmission-gtk transmission-qt 0 profiles are in prompt mode. 0 profiles are in kill mode. 78 profiles are in unconfined mode. 1password Discord MongoDB Compass QtWebEngineProcess balena-etcher brave buildah busybox cam ch-checkns ch-run chrome chromium crun devhelp element-desktop epiphany evolution firefox flatpak foliate geary github-desktop goldendict ipa_verify kchmviewer keybase lc-compliance libcamerify linux-sandbox loupe lxc-attach lxc-create lxc-destroy lxc-execute lxc-stop lxc-unshare lxc-usernsexec mmdebstrap msedge nautilus notepadqq obsidian opam opera pageedit podman polypane privacybrowser qcam qmapshack qutebrowser rootlesskit rpm rssguard runc scide signal-desktop slack slirp4netns steam stress-ng surfshark systemd-coredump thunderbird toybox trinity tup tuxedo-control-center userbindmount uwsgi-core vdens virtiofsd vivaldi-bin vpnns vscode wike wpcom 0 processes have profiles defined. 0 processes are in enforce mode. 0 processes are in complain mode. 0 processes are in prompt mode. 0 processes are in kill mode. 0 processes are unconfined but have a profile defined. 0 processes are in mixed mode. ``` </p> </details> 3. Did you enable apparmor via a kernel string? Mine is in the kernel string via grub **Source:** https://wiki.archlinux.org/title/AppArmor 4. Can you share your whitelist-usr-share-common.inc configuration file? Thanks
Author
Owner

@Bundy01 commented on GitHub (Oct 8, 2025):

  1. Archlinux with Cinnamon and linux 6.17.1.arch1-1 (during testing was 6.16.10.arch1-1)

  2. sudo aa-enabled yes

sudo aa-status

apparmor module is loaded.
163 profiles are loaded.
80 profiles are in enforce mode.
   /usr/bin/unbound
   /usr/lib/apache2/mpm-prefork/apache2
   /usr/lib/apache2/mpm-prefork/apache2//DEFAULT_URI
   /usr/lib/apache2/mpm-prefork/apache2//HANDLING_UNTRUSTED_INPUT
   /usr/lib/apache2/mpm-prefork/apache2//phpsysinfo
   apache2
   apache2//DEFAULT_URI
   apache2//HANDLING_UNTRUSTED_INPUT
   apache2//phpsysinfo
   avahi-daemon
   dnsmasq
   dnsmasq//libvirt_leaseshelper
   dovecot
   dovecot-anvil
   dovecot-auth
   dovecot-config
   dovecot-deliver
   dovecot-dict
   dovecot-director
   dovecot-doveadm-server
   dovecot-dovecot-auth
   dovecot-dovecot-lda
   dovecot-dovecot-lda//sendmail
   dovecot-imap
   dovecot-imap-login
   dovecot-lmtp
   dovecot-log
   dovecot-managesieve
   dovecot-managesieve-login
   dovecot-pop3
   dovecot-pop3-login
   dovecot-replicator
   dovecot-script-login
   dovecot-ssl-params
   dovecot-stats
   firejail-default
   identd
   klogd
   lsb_release
   mdnsd
   nmbd
   nscd
   ntpd
   nvidia_modprobe
   nvidia_modprobe//kmod
   php-fpm
   ping
   plasmashell
   plasmashell//QtWebEngineProcess
   samba-bgqd
   samba-dcerpcd
   samba-rpcd
   samba-rpcd-classic
   samba-rpcd-spoolss
   sbuild
   sbuild-abort
   sbuild-adduser
   sbuild-apt
   sbuild-checkpackages
   sbuild-clean
   sbuild-createchroot
   sbuild-destroychroot
   sbuild-distupgrade
   sbuild-hold
   sbuild-shell
   sbuild-unhold
   sbuild-update
   sbuild-upgrade
   smbd
   smbldap-useradd
   smbldap-useradd///etc/init.d/nscd
   syslog-ng
   syslogd
   traceroute
   unix-chkpwd
   unprivileged_userns
   winbindd
   zgrep
   zgrep//helper
   zgrep//sed
5 profiles are in complain mode.
   Xorg
   transmission-cli
   transmission-daemon
   transmission-gtk
   transmission-qt
0 profiles are in prompt mode.
0 profiles are in kill mode.
78 profiles are in unconfined mode.
   1password
   Discord
   MongoDB Compass
   QtWebEngineProcess
   balena-etcher
   brave
   buildah
   busybox
   cam
   ch-checkns
   ch-run
   chrome
   chromium
   crun
   devhelp
   element-desktop
   epiphany
   evolution
   firefox
   flatpak
   foliate
   geary
   github-desktop
   goldendict
   ipa_verify
   kchmviewer
   keybase
   lc-compliance
   libcamerify
   linux-sandbox
   loupe
   lxc-attach
   lxc-create
   lxc-destroy
   lxc-execute
   lxc-stop
   lxc-unshare
   lxc-usernsexec
   mmdebstrap
   msedge
   nautilus
   notepadqq
   obsidian
   opam
   opera
   pageedit
   podman
   polypane
   privacybrowser
   qcam
   qmapshack
   qutebrowser
   rootlesskit
   rpm
   rssguard
   runc
   scide
   signal-desktop
   slack
   slirp4netns
   steam
   stress-ng
   surfshark
   systemd-coredump
   thunderbird
   toybox
   trinity
   tup
   tuxedo-control-center
   userbindmount
   uwsgi-core
   vdens
   virtiofsd
   vivaldi-bin
   vpnns
   vscode
   wike
   wpcom
45 processes have profiles defined.
39 processes are in enforce mode.
   /usr/bin/unbound (922) 
   /usr/bin/easyeffects (1374) firejail-default//&unconfined
   /usr/bin/conky (2086) firejail-default//&unconfined
   /usr/bin/conky (2245) firejail-default//&unconfined
   /usr/lib/electron37/electron (2370) firejail-default//&unconfined
   /usr/lib/electron37/electron (2373) firejail-default//&unconfined
   /usr/lib/electron37/electron (2374) firejail-default//&unconfined
   /usr/lib/electron37/electron (2376) firejail-default//&unconfined
   /usr/lib/electron37/chrome_crashpad_handler (2390) firejail-default//&unconfined
   /usr/lib/electron37/electron (2424) firejail-default//&unconfined
   /usr/lib/electron37/electron (2429) firejail-default//&unconfined
   /usr/lib/electron37/electron (2472) firejail-default//&unconfined
   /usr/lib/electron37/electron (2473) firejail-default//&unconfined
   /usr/bin/bash (2530) firejail-default//&unconfined
   /usr/bin/bash (2533) firejail-default//&unconfined
   /usr/lib/mailspring/app.asar.unpacked/mailsync.bin (2534) firejail-default//&unconfined
   /usr/lib/mailspring/app.asar.unpacked/mailsync.bin (2537) firejail-default//&unconfined
   /usr/bin/open_tv (6942) firejail-default//&unconfined
   /usr/lib/webkit2gtk-4.1/WebKitNetworkProcess (6957) firejail-default//&unconfined
   /usr/lib/webkit2gtk-4.1/WebKitWebProcess (6960) firejail-default//&unconfined
   /usr/bin/firejail (7479) firejail-default//&unconfined
   /usr/lib/electron37/electron (10899) firejail-default//&unconfined
   /usr/bin/keepassxc (22539) firejail-default//&unconfined
   /opt/brave-bin/brave (22815) firejail-default//&unconfined
   /opt/brave-bin/chrome_crashpad_handler (22817) firejail-default//&unconfined
   /opt/brave-bin/chrome_crashpad_handler (22819) firejail-default//&unconfined
   /opt/brave-bin/brave (22825) firejail-default//&unconfined
   /opt/brave-bin/brave (22826) firejail-default//&unconfined
   /opt/brave-bin/brave (22828) firejail-default//&unconfined
   /opt/brave-bin/brave (22860) firejail-default//&unconfined
   /opt/brave-bin/brave (22863) firejail-default//&unconfined
   /opt/brave-bin/brave (22876) firejail-default//&unconfined
   /opt/brave-bin/brave (22967) firejail-default//&unconfined
   /opt/brave-bin/brave (22986) firejail-default//&unconfined
   /usr/bin/keepassxc-proxy (23132) firejail-default//&unconfined
   /opt/brave-bin/brave (24233) firejail-default//&unconfined
   /opt/brave-bin/brave (25855) firejail-default//&unconfined
   /opt/brave-bin/brave (25896) firejail-default//&unconfined
   /opt/brave-bin/brave (25905) firejail-default//&unconfined
0 processes are in complain mode.
0 processes are in prompt mode.
0 processes are in kill mode.
6 processes are unconfined but have a profile defined.
   /opt/tuxedo-control-center/tuxedo-control-center (1272) tuxedo-control-center
   /opt/tuxedo-control-center/tuxedo-control-center (1336) tuxedo-control-center
   /opt/tuxedo-control-center/tuxedo-control-center (1337) tuxedo-control-center
   /opt/tuxedo-control-center/tuxedo-control-center (1347) tuxedo-control-center
   /opt/tuxedo-control-center/tuxedo-control-center (1701) tuxedo-control-center
   /opt/tuxedo-control-center/tuxedo-control-center (1833) tuxedo-control-center
0 processes are in mixed mode.

  1. Yes, enabled with systemd-boot

whitelist-usr-share-common.inc

# This file is overwritten during software install.
# Persistent customizations should go in a .local file.
include whitelist-usr-share-common.local

# common /usr/share whitelist for all profiles

whitelist /usr/share/alsa
whitelist /usr/share/applications
whitelist /usr/share/ca-certificates
whitelist /usr/share/crypto-policies
whitelist /usr/share/cursors
whitelist /usr/share/dconf
whitelist /usr/share/distro-info
whitelist /usr/share/drirc.d
whitelist /usr/share/egl
whitelist /usr/share/enchant
whitelist /usr/share/enchant-2
whitelist /usr/share/file
whitelist /usr/share/fontconfig
whitelist /usr/share/fonts
whitelist /usr/share/fonts-config
whitelist /usr/share/gir-1.0
whitelist /usr/share/gjs-1.0
whitelist /usr/share/glib-2.0
whitelist /usr/share/glvnd
whitelist /usr/share/glycin-loaders
whitelist /usr/share/gtk-2.0
whitelist /usr/share/gtk-3.0
whitelist /usr/share/gtk-engines
whitelist /usr/share/gtksourceview-3.0
whitelist /usr/share/gtksourceview-4
whitelist /usr/share/hunspell
whitelist /usr/share/hyphen
whitelist /usr/share/hwdata
whitelist /usr/share/icons
whitelist /usr/share/icu
whitelist /usr/share/knotifications5
whitelist /usr/share/kservices5
whitelist /usr/share/Kvantum
whitelist /usr/share/kxmlgui5
whitelist /usr/share/libdrm
whitelist /usr/share/libthai
whitelist /usr/share/locale
whitelist /usr/share/locale-langpack
whitelist /usr/share/mime
whitelist /usr/share/misc
whitelist /usr/share/Modules
whitelist /usr/share/myspell
whitelist /usr/share/p11-kit
whitelist /usr/share/perl
whitelist /usr/share/perl5
whitelist /usr/share/pipewire
whitelist /usr/share/pixmaps
whitelist /usr/share/pki
whitelist /usr/share/plasma
whitelist /usr/share/publicsuffix
whitelist /usr/share/qt
whitelist /usr/share/qt4
whitelist /usr/share/qt5
whitelist /usr/share/qt5ct
whitelist /usr/share/qt6
whitelist /usr/share/qt6ct
whitelist /usr/share/sounds
whitelist /usr/share/tcl8.6
whitelist /usr/share/tcltk
whitelist /usr/share/terminfo
whitelist /usr/share/texlive
whitelist /usr/share/texmf
whitelist /usr/share/themes
whitelist /usr/share/thumbnail.so
whitelist /usr/share/uim
whitelist /usr/share/vulkan
whitelist /usr/share/X11
whitelist /usr/share/xkeyboard-config-2
whitelist /usr/share/xml
whitelist /usr/share/zenity
whitelist /usr/share/zoneinfo

<!-- gh-comment-id:3382471019 --> @Bundy01 commented on GitHub (Oct 8, 2025): 1. Archlinux with Cinnamon and linux 6.17.1.arch1-1 (during testing was 6.16.10.arch1-1) 2. sudo aa-enabled yes <details> <summary>sudo aa-status</summary> <p> ``` apparmor module is loaded. 163 profiles are loaded. 80 profiles are in enforce mode. /usr/bin/unbound /usr/lib/apache2/mpm-prefork/apache2 /usr/lib/apache2/mpm-prefork/apache2//DEFAULT_URI /usr/lib/apache2/mpm-prefork/apache2//HANDLING_UNTRUSTED_INPUT /usr/lib/apache2/mpm-prefork/apache2//phpsysinfo apache2 apache2//DEFAULT_URI apache2//HANDLING_UNTRUSTED_INPUT apache2//phpsysinfo avahi-daemon dnsmasq dnsmasq//libvirt_leaseshelper dovecot dovecot-anvil dovecot-auth dovecot-config dovecot-deliver dovecot-dict dovecot-director dovecot-doveadm-server dovecot-dovecot-auth dovecot-dovecot-lda dovecot-dovecot-lda//sendmail dovecot-imap dovecot-imap-login dovecot-lmtp dovecot-log dovecot-managesieve dovecot-managesieve-login dovecot-pop3 dovecot-pop3-login dovecot-replicator dovecot-script-login dovecot-ssl-params dovecot-stats firejail-default identd klogd lsb_release mdnsd nmbd nscd ntpd nvidia_modprobe nvidia_modprobe//kmod php-fpm ping plasmashell plasmashell//QtWebEngineProcess samba-bgqd samba-dcerpcd samba-rpcd samba-rpcd-classic samba-rpcd-spoolss sbuild sbuild-abort sbuild-adduser sbuild-apt sbuild-checkpackages sbuild-clean sbuild-createchroot sbuild-destroychroot sbuild-distupgrade sbuild-hold sbuild-shell sbuild-unhold sbuild-update sbuild-upgrade smbd smbldap-useradd smbldap-useradd///etc/init.d/nscd syslog-ng syslogd traceroute unix-chkpwd unprivileged_userns winbindd zgrep zgrep//helper zgrep//sed 5 profiles are in complain mode. Xorg transmission-cli transmission-daemon transmission-gtk transmission-qt 0 profiles are in prompt mode. 0 profiles are in kill mode. 78 profiles are in unconfined mode. 1password Discord MongoDB Compass QtWebEngineProcess balena-etcher brave buildah busybox cam ch-checkns ch-run chrome chromium crun devhelp element-desktop epiphany evolution firefox flatpak foliate geary github-desktop goldendict ipa_verify kchmviewer keybase lc-compliance libcamerify linux-sandbox loupe lxc-attach lxc-create lxc-destroy lxc-execute lxc-stop lxc-unshare lxc-usernsexec mmdebstrap msedge nautilus notepadqq obsidian opam opera pageedit podman polypane privacybrowser qcam qmapshack qutebrowser rootlesskit rpm rssguard runc scide signal-desktop slack slirp4netns steam stress-ng surfshark systemd-coredump thunderbird toybox trinity tup tuxedo-control-center userbindmount uwsgi-core vdens virtiofsd vivaldi-bin vpnns vscode wike wpcom 45 processes have profiles defined. 39 processes are in enforce mode. /usr/bin/unbound (922) /usr/bin/easyeffects (1374) firejail-default//&unconfined /usr/bin/conky (2086) firejail-default//&unconfined /usr/bin/conky (2245) firejail-default//&unconfined /usr/lib/electron37/electron (2370) firejail-default//&unconfined /usr/lib/electron37/electron (2373) firejail-default//&unconfined /usr/lib/electron37/electron (2374) firejail-default//&unconfined /usr/lib/electron37/electron (2376) firejail-default//&unconfined /usr/lib/electron37/chrome_crashpad_handler (2390) firejail-default//&unconfined /usr/lib/electron37/electron (2424) firejail-default//&unconfined /usr/lib/electron37/electron (2429) firejail-default//&unconfined /usr/lib/electron37/electron (2472) firejail-default//&unconfined /usr/lib/electron37/electron (2473) firejail-default//&unconfined /usr/bin/bash (2530) firejail-default//&unconfined /usr/bin/bash (2533) firejail-default//&unconfined /usr/lib/mailspring/app.asar.unpacked/mailsync.bin (2534) firejail-default//&unconfined /usr/lib/mailspring/app.asar.unpacked/mailsync.bin (2537) firejail-default//&unconfined /usr/bin/open_tv (6942) firejail-default//&unconfined /usr/lib/webkit2gtk-4.1/WebKitNetworkProcess (6957) firejail-default//&unconfined /usr/lib/webkit2gtk-4.1/WebKitWebProcess (6960) firejail-default//&unconfined /usr/bin/firejail (7479) firejail-default//&unconfined /usr/lib/electron37/electron (10899) firejail-default//&unconfined /usr/bin/keepassxc (22539) firejail-default//&unconfined /opt/brave-bin/brave (22815) firejail-default//&unconfined /opt/brave-bin/chrome_crashpad_handler (22817) firejail-default//&unconfined /opt/brave-bin/chrome_crashpad_handler (22819) firejail-default//&unconfined /opt/brave-bin/brave (22825) firejail-default//&unconfined /opt/brave-bin/brave (22826) firejail-default//&unconfined /opt/brave-bin/brave (22828) firejail-default//&unconfined /opt/brave-bin/brave (22860) firejail-default//&unconfined /opt/brave-bin/brave (22863) firejail-default//&unconfined /opt/brave-bin/brave (22876) firejail-default//&unconfined /opt/brave-bin/brave (22967) firejail-default//&unconfined /opt/brave-bin/brave (22986) firejail-default//&unconfined /usr/bin/keepassxc-proxy (23132) firejail-default//&unconfined /opt/brave-bin/brave (24233) firejail-default//&unconfined /opt/brave-bin/brave (25855) firejail-default//&unconfined /opt/brave-bin/brave (25896) firejail-default//&unconfined /opt/brave-bin/brave (25905) firejail-default//&unconfined 0 processes are in complain mode. 0 processes are in prompt mode. 0 processes are in kill mode. 6 processes are unconfined but have a profile defined. /opt/tuxedo-control-center/tuxedo-control-center (1272) tuxedo-control-center /opt/tuxedo-control-center/tuxedo-control-center (1336) tuxedo-control-center /opt/tuxedo-control-center/tuxedo-control-center (1337) tuxedo-control-center /opt/tuxedo-control-center/tuxedo-control-center (1347) tuxedo-control-center /opt/tuxedo-control-center/tuxedo-control-center (1701) tuxedo-control-center /opt/tuxedo-control-center/tuxedo-control-center (1833) tuxedo-control-center 0 processes are in mixed mode. ``` </p> </details> 3. Yes, enabled with systemd-boot 4. <details> <summary>whitelist-usr-share-common.inc</summary> <p> ``` # This file is overwritten during software install. # Persistent customizations should go in a .local file. include whitelist-usr-share-common.local # common /usr/share whitelist for all profiles whitelist /usr/share/alsa whitelist /usr/share/applications whitelist /usr/share/ca-certificates whitelist /usr/share/crypto-policies whitelist /usr/share/cursors whitelist /usr/share/dconf whitelist /usr/share/distro-info whitelist /usr/share/drirc.d whitelist /usr/share/egl whitelist /usr/share/enchant whitelist /usr/share/enchant-2 whitelist /usr/share/file whitelist /usr/share/fontconfig whitelist /usr/share/fonts whitelist /usr/share/fonts-config whitelist /usr/share/gir-1.0 whitelist /usr/share/gjs-1.0 whitelist /usr/share/glib-2.0 whitelist /usr/share/glvnd whitelist /usr/share/glycin-loaders whitelist /usr/share/gtk-2.0 whitelist /usr/share/gtk-3.0 whitelist /usr/share/gtk-engines whitelist /usr/share/gtksourceview-3.0 whitelist /usr/share/gtksourceview-4 whitelist /usr/share/hunspell whitelist /usr/share/hyphen whitelist /usr/share/hwdata whitelist /usr/share/icons whitelist /usr/share/icu whitelist /usr/share/knotifications5 whitelist /usr/share/kservices5 whitelist /usr/share/Kvantum whitelist /usr/share/kxmlgui5 whitelist /usr/share/libdrm whitelist /usr/share/libthai whitelist /usr/share/locale whitelist /usr/share/locale-langpack whitelist /usr/share/mime whitelist /usr/share/misc whitelist /usr/share/Modules whitelist /usr/share/myspell whitelist /usr/share/p11-kit whitelist /usr/share/perl whitelist /usr/share/perl5 whitelist /usr/share/pipewire whitelist /usr/share/pixmaps whitelist /usr/share/pki whitelist /usr/share/plasma whitelist /usr/share/publicsuffix whitelist /usr/share/qt whitelist /usr/share/qt4 whitelist /usr/share/qt5 whitelist /usr/share/qt5ct whitelist /usr/share/qt6 whitelist /usr/share/qt6ct whitelist /usr/share/sounds whitelist /usr/share/tcl8.6 whitelist /usr/share/tcltk whitelist /usr/share/terminfo whitelist /usr/share/texlive whitelist /usr/share/texmf whitelist /usr/share/themes whitelist /usr/share/thumbnail.so whitelist /usr/share/uim whitelist /usr/share/vulkan whitelist /usr/share/X11 whitelist /usr/share/xkeyboard-config-2 whitelist /usr/share/xml whitelist /usr/share/zenity whitelist /usr/share/zoneinfo ``` </p> </details>
Author
Owner

@derfehler commented on GitHub (Oct 10, 2025):

(aa-enabled returns Yes)?

Yes

Are any profiles loaded, other than the default one which does nothing, for Firefox?

No.

$ sudo aa-status 
apparmor module is loaded.
1 profiles are loaded.
1 profiles are in enforce mode.
   firejail-default

Would you mind to tell me how you replaced gdk-pixbuf2

I just installed/replaced it via yay.

Edit: I've noticed though after restart that *.svg icons are missing on desktop and default XFCE icons are wrong/different (not my theme, delft darkest). Taskbar is not showing icons at all.

The price is too high. I will go back to glycin.

Here are the commands that will help fix the icons if you are using gdk-pixbuf2-noglycin:

# gdk-pixbuf-query-loaders --update-cache
# update-mime-database /usr/share/mime
<!-- gh-comment-id:3389150721 --> @derfehler commented on GitHub (Oct 10, 2025): > > (`aa-enabled` returns `Yes`)? > > Yes > > > Are any profiles loaded, other than the default one which does nothing, for Firefox? > > No. > > ``` > $ sudo aa-status > apparmor module is loaded. > 1 profiles are loaded. > 1 profiles are in enforce mode. > firejail-default > ``` > > > Would you mind to tell me how you replaced gdk-pixbuf2 > > I just installed/replaced it via `yay`. > > Edit: I've noticed though after restart that *.svg icons are missing on desktop and default XFCE icons are wrong/different (not my theme, `delft darkest`). Taskbar is not showing icons at all. > > The price is too high. I will go back to glycin. Here are the commands that will help fix the icons if you are using gdk-pixbuf2-noglycin: ``` # gdk-pixbuf-query-loaders --update-cache # update-mime-database /usr/share/mime ```
Author
Owner

@BlueMax commented on GitHub (Oct 10, 2025):

Thanks. 'noglycin' is not necessary anymore though. It works properly with the default packages now (as stated in the follow-up posts).

<!-- gh-comment-id:3392344381 --> @BlueMax commented on GitHub (Oct 10, 2025): Thanks. 'noglycin' is not necessary anymore though. It works properly with the default packages now (as stated in the follow-up posts).
Author
Owner

@derfehler commented on GitHub (Oct 11, 2025):

Thanks. 'noglycin' is not necessary anymore though. It works properly with the default packages now (as stated in the follow-up posts).

Does it actually work with default packages? Without this:

whitelist /usr/share/glycin-loaders
noblacklist /usr/bin/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

ignore seccomp !chroot
ignore apparmor
seccomp !chroot,!mount,!pivot_root,!umount2

?
Without this, nothing works with gdk-pixbuf2 2.44.3-1 from the official Arch Linux repository. Issues persist with other programs like GIMP and Chromium. I don't like this !chroot,!mount,!pivot_root,!umount2 — I really don't, kinda don't like ignore apparmor. I don't understand the point of glycin if we already isolate everything using firejail?

<!-- gh-comment-id:3393577607 --> @derfehler commented on GitHub (Oct 11, 2025): > Thanks. 'noglycin' is not necessary anymore though. It works properly with the default packages now (as stated in the follow-up posts). Does it actually work with default packages? Without this: ``` whitelist /usr/share/glycin-loaders noblacklist /usr/bin/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ignore seccomp !chroot ignore apparmor seccomp !chroot,!mount,!pivot_root,!umount2 ``` ? Without this, nothing works with gdk-pixbuf2 2.44.3-1 from the official Arch Linux repository. Issues persist with other programs like GIMP and Chromium. I don't like this !chroot,!mount,!pivot_root,!umount2 — I really don't, kinda don't like ignore apparmor. I don't understand the point of glycin if we already isolate everything using firejail?
Author
Owner

@BlueMax commented on GitHub (Oct 12, 2025):

It still needs the relaxations, yes.

<!-- gh-comment-id:3393804241 --> @BlueMax commented on GitHub (Oct 12, 2025): It still needs the relaxations, yes.
Author
Owner

@SkewedZeppelin commented on GitHub (Oct 16, 2025):

2.0.1 should fix this: https://gitlab.gnome.org/GNOME/glycin/-/merge_requests/295

but I just tested fedora 43 with 2.0.3 and it still occurs

<!-- gh-comment-id:3410272956 --> @SkewedZeppelin commented on GitHub (Oct 16, 2025): 2.0.1 should fix this: https://gitlab.gnome.org/GNOME/glycin/-/merge_requests/295 but I just tested fedora 43 with 2.0.3 and it still occurs
Author
Owner

@SkewedZeppelin commented on GitHub (Oct 24, 2025):

I'd like to see this fixed soon, either in Firejail or directly in Glycin if possible.

I'm starting a bounty at USD$100 worth of XMR (Monero).
Currently valid until 2025-12-01.

Here is some related reading:

cc @valoq

<!-- gh-comment-id:3443476619 --> @SkewedZeppelin commented on GitHub (Oct 24, 2025): I'd like to see this fixed soon, either in Firejail or directly in Glycin if possible. I'm starting a bounty at USD$100 worth of XMR (Monero). Currently valid until 2025-12-01. Here is some related reading: - https://gitlab.gnome.org/GNOME/glycin/-/issues/203 - https://gitlab.gnome.org/GNOME/glycin/-/issues/209 - https://github.com/roddhjav/apparmor.d/issues/881 cc @valoq
Author
Owner

@valoq commented on GitHub (Oct 25, 2025):

There is a fallback in glycin that works just fine if bwrap is not available https://github.com/roddhjav/apparmor.d/issues/903

If you block access to /usr/bin/bwrap to prevent its execution, glycin will run without its internal sandbox. At the moment it seems to be used only by gdk-pixbuf to load icons, which does not call for sandboxing anyway since it renders only the application supplied icons as I understand it. That said, other applications may eventually use glycin to render images from untrusted sources and since they can confine a small subprocess, it will be a more effective sandbox then what firejail does for the entire application that uses glycin. In other words this workaround needs to be watched closely to only block bwrap for applications that require it for only gdk-pixbuf but not for applications that use glycin for external image rendering because the later will weaken the overall security.

<!-- gh-comment-id:3446569076 --> @valoq commented on GitHub (Oct 25, 2025): There is a fallback in glycin that works just fine if bwrap is not available https://github.com/roddhjav/apparmor.d/issues/903 If you block access to /usr/bin/bwrap to prevent its execution, glycin will run without its internal sandbox. At the moment it seems to be used only by gdk-pixbuf to load icons, which does not call for sandboxing anyway since it renders only the application supplied icons as I understand it. That said, other applications may eventually use glycin to render images from untrusted sources and since they can confine a small subprocess, it will be a more effective sandbox then what firejail does for the entire application that uses glycin. In other words this workaround needs to be watched closely to only block bwrap for applications that require it for only gdk-pixbuf but not for applications that use glycin for external image rendering because the later will weaken the overall security.
Author
Owner

@SkewedZeppelin commented on GitHub (Oct 25, 2025):

There is a fallback in glycin that works just fine if bwrap is not available

I noted above that it doesn't seem to work. Firejail already default blocks bwrap in disable-common.inc yet, many profiles fail to even launch.

<!-- gh-comment-id:3446696027 --> @SkewedZeppelin commented on GitHub (Oct 25, 2025): > There is a fallback in glycin that works just fine if bwrap is not available I noted above that it doesn't seem to work. Firejail already default blocks bwrap in disable-common.inc yet, many profiles fail to even launch.
Author
Owner

@valoq commented on GitHub (Oct 26, 2025):

The other permissions required by glycin still need to be allowed for the fallback.
There are two kinds of crashes caused by blocking permissions for glycin/gdk-pixbuf:

  1. Execute bwrap without the full permissions required to run bwrap (user namespaces, capabilities)
  2. Execute with blocked bwrap, but still blocking the required permissions to write temporary files. See https://github.com/roddhjav/apparmor.d/blob/main/apparmor.d/abstractions/app/bwrap-glycin for required permissions.

If you allow all the permissions in the linked profile in your firejail configuration, it should run without crashes with the fallback option.

Update:
This is how the solution looks like in apparmor https://github.com/roddhjav/apparmor.d/pull/918/files

<!-- gh-comment-id:3448423157 --> @valoq commented on GitHub (Oct 26, 2025): The other permissions required by glycin still need to be allowed for the fallback. There are two kinds of crashes caused by blocking permissions for glycin/gdk-pixbuf: 1. Execute bwrap without the full permissions required to run bwrap (user namespaces, capabilities) 2. Execute with blocked bwrap, but still blocking the required permissions to write temporary files. See https://github.com/roddhjav/apparmor.d/blob/main/apparmor.d/abstractions/app/bwrap-glycin for required permissions. If you allow all the permissions in the linked profile in your firejail configuration, it should run without crashes with the fallback option. Update: This is how the solution looks like in apparmor https://github.com/roddhjav/apparmor.d/pull/918/files
Author
Owner

@lucasmz-dev commented on GitHub (Oct 26, 2025):

Gtk:ERROR:../gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/breeze-dark/status/16/image-missing.svg: Could not spawn `"bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib64" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/lucas/.cache/fontconfig" "/home/lucas/.cache/fontconfig" "--ro-bind-try" "/home/lucas/.config/fontconfig/fonts.conf" "/home/lucas/.config/fontconfig/fonts.conf" "--ro-bind-try" "/usr/lib/fontconfig/cache" "/usr/lib/fontconfig/cache" "--bind-try" "/home/lucas/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "/home/lucas/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/lucas/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "--seccomp" "150" "/usr/libexec/glycin-loaders/2+/glycin-svg" "--dbus-fd" "149"`: Permissão negada (os error 13) (gdk-pixbuf-error-quark, 0)
Bail out! Gtk:ERROR:../gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/breeze-dark/status/16/image-missing.svg: Could not spawn `"bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib64" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/lucas/.cache/fontconfig" "/home/lucas/.cache/fontconfig" "--ro-bind-try" "/home/lucas/.config/fontconfig/fonts.conf" "/home/lucas/.config/fontconfig/fonts.conf" "--ro-bind-try" "/usr/lib/fontconfig/cache" "/usr/lib/fontconfig/cache" "--bind-try" "/home/lucas/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "/home/lucas/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/lucas/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "--seccomp" "150" "/usr/libexec/glycin-loaders/2+/glycin-svg" "--dbus-fd" "149"`: Permissão negada (os error 13) (gdk-pixbuf-error-quark, 0)
Redirecting call to abort() to mozalloc_abort

seems like this is happening in F43 KDE as well

<!-- gh-comment-id:3449020075 --> @lucasmz-dev commented on GitHub (Oct 26, 2025): ``` Gtk:ERROR:../gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/breeze-dark/status/16/image-missing.svg: Could not spawn `"bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib64" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/lucas/.cache/fontconfig" "/home/lucas/.cache/fontconfig" "--ro-bind-try" "/home/lucas/.config/fontconfig/fonts.conf" "/home/lucas/.config/fontconfig/fonts.conf" "--ro-bind-try" "/usr/lib/fontconfig/cache" "/usr/lib/fontconfig/cache" "--bind-try" "/home/lucas/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "/home/lucas/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/lucas/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "--seccomp" "150" "/usr/libexec/glycin-loaders/2+/glycin-svg" "--dbus-fd" "149"`: Permissão negada (os error 13) (gdk-pixbuf-error-quark, 0) Bail out! Gtk:ERROR:../gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/breeze-dark/status/16/image-missing.svg: Could not spawn `"bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib64" "/lib64" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/lucas/.cache/fontconfig" "/home/lucas/.cache/fontconfig" "--ro-bind-try" "/home/lucas/.config/fontconfig/fonts.conf" "/home/lucas/.config/fontconfig/fonts.conf" "--ro-bind-try" "/usr/lib/fontconfig/cache" "/usr/lib/fontconfig/cache" "--bind-try" "/home/lucas/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "/home/lucas/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/lucas/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "--seccomp" "150" "/usr/libexec/glycin-loaders/2+/glycin-svg" "--dbus-fd" "149"`: Permissão negada (os error 13) (gdk-pixbuf-error-quark, 0) Redirecting call to abort() to mozalloc_abort ``` seems like this is happening in F43 KDE as well
Author
Owner

@t-m-w commented on GitHub (Nov 5, 2025):

In the specific case of Firefox, adding the following to firefox.local prevents crashes:

whitelist /usr/share/glycin-loaders
[...]

I'm not sure of the merits vs the workaround above, but an alternative crash-prevention workaround for Mozilla applications that worked for me in Fedora 43 with KDE Plasma was to add this to firefox-common.local:

dbus-user.talk org.freedesktop.portal.Desktop

...and then set widget.use-xdg-desktop-portal.file-picker to 1 for Firefox/Librewolf (via about:config) and for Thunderbird (via Config Editor button, found by searching Settings for "config").

This apparently forces the native file picker to be used (KDE's in my case), vs the default of 2 which decides for you.

These changes were mentioned in this comment / elsewhere in that issue: https://github.com/netblue30/firejail/issues/6927#issue-3485455591

edit: Downsides are mentioned in the above link, too; you may end up trying to save somewhere that the browser has no permissions to save, which will fail.

<!-- gh-comment-id:3491846228 --> @t-m-w commented on GitHub (Nov 5, 2025): > In the specific case of Firefox, adding the following to `firefox.local` prevents crashes: > > ``` > whitelist /usr/share/glycin-loaders > [...] > ``` I'm not sure of the merits vs the workaround above, but an alternative crash-prevention workaround for Mozilla applications that worked for me in Fedora 43 with KDE Plasma was to add this to `firefox-common.local`: ``` dbus-user.talk org.freedesktop.portal.Desktop ``` ...and then set `widget.use-xdg-desktop-portal.file-picker` to `1` for Firefox/Librewolf (via `about:config`) and for Thunderbird (via Config Editor button, found by searching Settings for "config"). This apparently forces the native file picker to be used (KDE's in my case), vs the default of `2` which decides for you. These changes were mentioned in this comment / elsewhere in that issue: https://github.com/netblue30/firejail/issues/6927#issue-3485455591 edit: Downsides are mentioned in the above link, too; you may end up trying to save somewhere that the browser has no permissions to save, which will fail.
Author
Owner

@Toquita3D commented on GitHub (Nov 20, 2025):

Non-techy user here, but is this why I lost my minimize/maximize/close buttons on Firefox? (Fedora 43 KDE)

<!-- gh-comment-id:3555594264 --> @Toquita3D commented on GitHub (Nov 20, 2025): Non-techy user here, but is this why I lost my minimize/maximize/close buttons on Firefox? (Fedora 43 KDE)
Author
Owner

@lucasmz-dev commented on GitHub (Nov 20, 2025):

Yeah same here. I had to stop using firejail for now. It seems to also cause performance issues while moving the window, fullscreen and the issue isn't there. https://github.com/netblue30/firejail/issues/6946

<!-- gh-comment-id:3555602812 --> @lucasmz-dev commented on GitHub (Nov 20, 2025): Yeah same here. I had to stop using firejail for now. It seems to also cause performance issues while moving the window, fullscreen and the issue isn't there. https://github.com/netblue30/firejail/issues/6946
Author
Owner

@NetSysFire commented on GitHub (Nov 20, 2025):

If you happen to use Arch Linux, you may want to try https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin until stuff starts getting fixed. I have switched to it myself because so many things have broken everywhere.

<!-- gh-comment-id:3559974709 --> @NetSysFire commented on GitHub (Nov 20, 2025): If you happen to use Arch Linux, you may want to try https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin until stuff starts getting fixed. I have switched to it myself because so many things have broken everywhere.
Author
Owner

@carlsampurna commented on GitHub (Nov 20, 2025):

If you happen to use Arch Linux, you may want to try https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin until stuff starts getting fixed.

I've installed gdk-pixbuf2-noglycin in /usr/local/lib and put this:

env LD_LIBRARY_PATH=/usr/local/lib

in e.g. ~/.config/firejail/firefox.local

<!-- gh-comment-id:3560181883 --> @carlsampurna commented on GitHub (Nov 20, 2025): > If you happen to use Arch Linux, you may want to try https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin until stuff starts getting fixed. I've installed gdk-pixbuf2-noglycin in /usr/local/lib and put this: env LD_LIBRARY_PATH=/usr/local/lib in e.g. ~/.config/firejail/firefox.local
Author
Owner

@Semuria commented on GitHub (Nov 22, 2025):

Since updating Fedora on 43, Firefox Thunderbird and even pdf-viewer is only possible in -noprofile config.
I tend to deactivate it till fix is there

<!-- gh-comment-id:3566168608 --> @Semuria commented on GitHub (Nov 22, 2025): Since updating Fedora on 43, Firefox Thunderbird and even pdf-viewer is only possible in -noprofile config. I tend to deactivate it till fix is there
Author
Owner

@Dieterbe commented on GitHub (Nov 27, 2025):

If you happen to use Arch Linux, you may want to try https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin until stuff starts getting fixed.

I've installed gdk-pixbuf2-noglycin in /usr/local/lib and put this:

env LD_LIBRARY_PATH=/usr/local/lib

in e.g. ~/.config/firejail/firefox.local

thanks @NetSysFire - that seems to make things work again ! @carlsampurna i didn't need to do those customizations you mention, merely installing the package (which will replace the stock gdk-pixbuf2) does the job for me (on Arch, btw)

<!-- gh-comment-id:3584672062 --> @Dieterbe commented on GitHub (Nov 27, 2025): > > If you happen to use Arch Linux, you may want to try https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin until stuff starts getting fixed. > > I've installed gdk-pixbuf2-noglycin in /usr/local/lib and put this: > > env LD_LIBRARY_PATH=/usr/local/lib > > in e.g. ~/.config/firejail/firefox.local thanks @NetSysFire - that seems to make things work again ! @carlsampurna i didn't need to do those customizations you mention, merely installing the package (which will replace the stock gdk-pixbuf2) does the job for me (on Arch, btw)
Author
Owner

@carlsampurna commented on GitHub (Nov 27, 2025):

If you happen to use Arch Linux, you may want to try https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin until stuff starts getting fixed.

I've installed gdk-pixbuf2-noglycin in /usr/local/lib and put this:
env LD_LIBRARY_PATH=/usr/local/lib
in e.g. ~/.config/firejail/firefox.local

thanks @NetSysFire - that seems to make things work again ! @carlsampurna i didn't need to do those customizations you mention, merely installing the package (which will replace the stock gdk-pixbuf2) does the job for me (on Arch, btw)

yes, that's easier than what I suggested, I just didn't want to lose the sandboxing in gdk-pixbuf2 except when running under firejail. I used this patch to the -noglycin PKGBUILD so it would install without replacing:

gdk-pixbuf2-noglycin-patch.txt

<!-- gh-comment-id:3586782388 --> @carlsampurna commented on GitHub (Nov 27, 2025): > > > If you happen to use Arch Linux, you may want to try https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin until stuff starts getting fixed. > > > > > > I've installed gdk-pixbuf2-noglycin in /usr/local/lib and put this: > > env LD_LIBRARY_PATH=/usr/local/lib > > in e.g. ~/.config/firejail/firefox.local > > thanks [@NetSysFire](https://github.com/NetSysFire) - that seems to make things work again ! [@carlsampurna](https://github.com/carlsampurna) i didn't need to do those customizations you mention, merely installing the package (which will replace the stock gdk-pixbuf2) does the job for me (on Arch, btw) yes, that's easier than what I suggested, I just didn't want to lose the sandboxing in gdk-pixbuf2 except when running under firejail. I used this patch to the -noglycin PKGBUILD so it would install without replacing: [gdk-pixbuf2-noglycin-patch.txt](https://github.com/user-attachments/files/23808532/gdk-pixbuf2-noglycin-patch.txt)
Author
Owner

@monxa commented on GitHub (Nov 27, 2025):

Additionally to
https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin
you might want install
https://aur.archlinux.org/packages/librsvg-noglycin
for various icons (e.g. gimp and inkscape) as suggested by shoryuken.

Uses rust package with 2024 manifest, might have to run rustup update.

<!-- gh-comment-id:3587152418 --> @monxa commented on GitHub (Nov 27, 2025): Additionally to https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin you might want install https://aur.archlinux.org/packages/librsvg-noglycin for various icons (e.g. gimp and inkscape) as suggested by shoryuken. Uses rust package with 2024 manifest, might have to run `rustup update`.
Author
Owner

@martinetd commented on GitHub (Nov 29, 2025):

In the specific case of Firefox, adding the following to firefox.local prevents crashes:

For fedora 43 I also had to allow /usr/libexec/glycin-loaders:

whitelist /usr/share/glycin-loaders
whitelist /usr/libexec/glycin-loaders
noblacklist /usr/libexec
noblacklist /usr/bin/bwrap
noblacklist /proc/sys/kernel/overflowuid
noblacklist /proc/sys/kernel/overflowgid

ignore seccomp !chroot
seccomp !chroot,!mount,!pivot_root,!umount2

I also considered providing a dumbed-down bwrap inside the jail (something that won't do anything and just run the given program), but:

  • while (from a quick look at the bwrap command in error message) it might work here it's not acceptable in general, because bwrap could be used to bind-mount things at different paths than what they are in which case doing nothing is not an option
  • ... I couldn't figure how to override bwrap just inside the firejail profile, bind being root-only...

So, I guess our best bet would be to get glycin to skip bwrap if running with bwrap failed -- I've opened https://gitlab.gnome.org/GNOME/glycin/-/issues/244 to see how they feel about it since I didn't see anyone else asking (sorry if it's a dup...)

<!-- gh-comment-id:3591739840 --> @martinetd commented on GitHub (Nov 29, 2025): > In the specific case of Firefox, adding the following to firefox.local prevents crashes: For fedora 43 I also had to allow /usr/libexec/glycin-loaders: ``` whitelist /usr/share/glycin-loaders whitelist /usr/libexec/glycin-loaders noblacklist /usr/libexec noblacklist /usr/bin/bwrap noblacklist /proc/sys/kernel/overflowuid noblacklist /proc/sys/kernel/overflowgid ignore seccomp !chroot seccomp !chroot,!mount,!pivot_root,!umount2 ``` I also considered providing a dumbed-down bwrap inside the jail (something that won't do anything and just run the given program), but: - while (from a quick look at the bwrap command in error message) it might work here it's not acceptable in general, because bwrap could be used to bind-mount things at different paths than what they are in which case doing nothing is not an option - ... I couldn't figure how to override bwrap just inside the firejail profile, bind being root-only... So, I guess our best bet would be to get glycin to skip bwrap if running with bwrap failed -- I've opened https://gitlab.gnome.org/GNOME/glycin/-/issues/244 to see how they feel about it since I didn't see anyone else asking (sorry if it's a dup...)
Author
Owner

@qjerome commented on GitHub (Dec 8, 2025):

@martinetd

I investigated a bit around the issue you've posted on gnome (as I am having the same issue as everyone here).
Where you ask why 28005a815e doesn't fix the issue.

The answer I found is simply because we end up in that branch of the code:

else if std::str::from_utf8(&output.stderr).map_or(false, |x| {
                [
                    "Creating new namespace failed",
                    "No permissions to create a new namespace",
                    // Wrong grammar in older bwrap versions
                    "No permissions to creating new namespace",
                ]
                .iter()
                .any(|y| x.contains(y))
            }) {
                tracing::debug!("bwrap syscalls not available: STDERR contains known string");
                Ok(true)
            }

Unfortunately the error returned by bwrap called from inside firejail aren't in that allow list.

If /proc/sys/kernel/overflowuid isn't accessible, bwrap errors out:

bwrap: Can't read /proc/sys/kernel/overflowuid: Permission denied

If /proc/sys/kernel/overflowuid is available but seccomp isn't aligned with what bwrap expects, we get:

bwrap: Failed to make / slave: Operation not permitted

None of these are in the allow list to detect if glycin is already running in a sandbox.

By extension, if you replace the bwrap binary with the following everything works (assuming the profile changes below):

#!/bin/bash

echo "Creating new namespace failed" >&2
exit 42

Profile changes:

noblacklist /usr/bin/bwrap
whitelist /usr/share/glycin-loaders

I think the proper fix would be to actually try to identify in a reliable way if glycin inherits some sandboxing context (like seccomp filters by checking /proc/self/status) rather than relying on some hardcoded magic strings.

Finally, I found a simple way to test if glycin is working:

  1. Load the wanted firejail profile with gtk-demo binary
  2. Click on "Pixbufs"

Example:

firejail \
  --noblacklist=/usr/bin/bwrap \
  --whitelist=/usr/share/glycin-loaders \
  --profile=/etc/firejail/firefox.profile \
  gtk-demo
<!-- gh-comment-id:3626699106 --> @qjerome commented on GitHub (Dec 8, 2025): @martinetd I investigated a bit around the issue you've posted on gnome (as I am having the same issue as everyone here). Where you ask why https://gitlab.gnome.org/GNOME/glycin/-/commit/28005a815e8e6f8869006e5481fd8d77006ec8d1 doesn't fix the issue. The answer I found is simply because we end up in that branch of the code: ```rust else if std::str::from_utf8(&output.stderr).map_or(false, |x| { [ "Creating new namespace failed", "No permissions to create a new namespace", // Wrong grammar in older bwrap versions "No permissions to creating new namespace", ] .iter() .any(|y| x.contains(y)) }) { tracing::debug!("bwrap syscalls not available: STDERR contains known string"); Ok(true) } ``` Unfortunately the error returned by bwrap called from inside `firejail` aren't in that allow list. If `/proc/sys/kernel/overflowuid` isn't accessible, `bwrap` errors out: ``` bwrap: Can't read /proc/sys/kernel/overflowuid: Permission denied ``` If `/proc/sys/kernel/overflowuid` is available but seccomp isn't aligned with what bwrap expects, we get: ``` bwrap: Failed to make / slave: Operation not permitted ``` None of these are in the allow list to detect if glycin is already running in a sandbox. By extension, if you replace the `bwrap` binary with the following everything works (assuming the profile changes below): ```bash #!/bin/bash echo "Creating new namespace failed" >&2 exit 42 ``` Profile changes: ``` noblacklist /usr/bin/bwrap whitelist /usr/share/glycin-loaders ``` I think the proper fix would be to actually try to identify in a reliable way if glycin inherits some sandboxing context (like seccomp filters by checking `/proc/self/status`) rather than relying on some hardcoded magic strings. Finally, I found a simple way to test if `glycin` is working: 1. Load the wanted firejail profile with `gtk-demo` binary 2. Click on "Pixbufs" Example: ```sh firejail \ --noblacklist=/usr/bin/bwrap \ --whitelist=/usr/share/glycin-loaders \ --profile=/etc/firejail/firefox.profile \ gtk-demo ```
Author
Owner

@qjerome commented on GitHub (Dec 8, 2025):

OK, so here is a simple yet hacky solution that solves the issue (you'll need to change stuffs back when a proper patch lands in glycin). This solution prevents from being relaxed on the seccomp policy of several programs but also from installing some packages from AUR (which might not be acceptable for some users).

  1. sudo mv /usr/bin/bwrap /usr/bin/bwrap.orig
  2. Create a new /usr/bin/bwrap with the following inside:
#!/bin/bash

seccomp=$(cat /proc/self/status | grep -i 'seccomp_filters' | cut -f 2)
# tests if we inherited some seccomp filters (likely we are already sandboxed)
if [[ $seccomp > 0 ]]
then
    # glycin considers it is sandboxed if the bwrap test process
    # exit with a non-zero status code and received SIGSYS
    kill -SIGSYS $$
    exit 42
fi

# fallback to original bwrap
exec bwrap.orig "$@"
  1. sudo chmod +x /usr/bin/bwrap
  2. Fix firejail globally (put that in a firejail config file loaded globally) (ex: I put it in ~/.config/firejail/globals.local):
whitelist /usr/libexec/glycin-loaders
noblacklist /usr/bin/bwrap
  1. Test it out firejail --profile=/etc/firejail/firefox.profile gtk-demo -> Click on "Pixbufs": if you get a moving image you won the fight

When an acceptable fix has landed for glycin, just run:

sudo mv /usr/bin/bwrap.orig /usr/bin/bwrap
<!-- gh-comment-id:3627004976 --> @qjerome commented on GitHub (Dec 8, 2025): OK, so here is a simple yet hacky solution that solves the issue (you'll need to change stuffs back when a proper patch lands in glycin). This solution prevents from being relaxed on the seccomp policy of several programs but also from installing some packages from AUR (which might not be acceptable for some users). 1. `sudo mv /usr/bin/bwrap /usr/bin/bwrap.orig` 2. Create a new `/usr/bin/bwrap` with the following inside: ```bash #!/bin/bash seccomp=$(cat /proc/self/status | grep -i 'seccomp_filters' | cut -f 2) # tests if we inherited some seccomp filters (likely we are already sandboxed) if [[ $seccomp > 0 ]] then # glycin considers it is sandboxed if the bwrap test process # exit with a non-zero status code and received SIGSYS kill -SIGSYS $$ exit 42 fi # fallback to original bwrap exec bwrap.orig "$@" ``` 3. `sudo chmod +x /usr/bin/bwrap` 4. Fix firejail globally (put that in a firejail config file loaded globally) (ex: I put it in `~/.config/firejail/globals.local`): ``` whitelist /usr/libexec/glycin-loaders noblacklist /usr/bin/bwrap ``` 5. Test it out `firejail --profile=/etc/firejail/firefox.profile gtk-demo` -> Click on "Pixbufs": if you get a moving image you won the fight When an acceptable fix has landed for `glycin`, just run: ```sh sudo mv /usr/bin/bwrap.orig /usr/bin/bwrap ```
Author
Owner

@paranoid-porygon commented on GitHub (Dec 14, 2025):

OK, so here is a simple yet hacky solution that solves the issue (you'll need to change stuffs back when a proper patch lands in glycin). This solution prevents from being relaxed on the seccomp policy of several programs but also from installing some packages from AUR (which might not be acceptable for some users).

  1. sudo mv /usr/bin/bwrap /usr/bin/bwrap.orig
  2. Create a new /usr/bin/bwrap with the following inside:
#!/bin/bash

seccomp=$(cat /proc/self/status | grep -i 'seccomp_filters' | cut -f 2)
# tests if we inherited some seccomp filters (likely we are already sandboxed)
if [[ $seccomp > 0 ]]
then
    # glycin considers it is sandboxed if the bwrap test process
    # exit with a non-zero status code and received SIGSYS
    kill -SIGSYS $$
    exit 42
fi

# fallback to original bwrap
exec bwrap.orig "$@"
  1. sudo chmod +x /usr/bin/bwrap
  2. Fix firejail globally (put that in a firejail config file loaded globally) (ex: I put it in ~/.config/firejail/globals.local):
whitelist /usr/libexec/glycin-loaders
noblacklist /usr/bin/bwrap
  1. Test it out firejail --profile=/etc/firejail/firefox.profile gtk-demo -> Click on "Pixbufs": if you get a moving image you won the fight

When an acceptable fix has landed for glycin, just run:

sudo mv /usr/bin/bwrap.orig /usr/bin/bwrap

I tried this on Arch but it unfortunately did not work for me. Had to resort to installing the gdk-pixbuf2-noglycin and librsvg-noglycin packages from the AUR, which did work.

<!-- gh-comment-id:3652386407 --> @paranoid-porygon commented on GitHub (Dec 14, 2025): > OK, so here is a simple yet hacky solution that solves the issue (you'll need to change stuffs back when a proper patch lands in glycin). This solution prevents from being relaxed on the seccomp policy of several programs but also from installing some packages from AUR (which might not be acceptable for some users). > > 1. `sudo mv /usr/bin/bwrap /usr/bin/bwrap.orig` > 2. Create a new `/usr/bin/bwrap` with the following inside: > > ```bash > #!/bin/bash > > seccomp=$(cat /proc/self/status | grep -i 'seccomp_filters' | cut -f 2) > # tests if we inherited some seccomp filters (likely we are already sandboxed) > if [[ $seccomp > 0 ]] > then > # glycin considers it is sandboxed if the bwrap test process > # exit with a non-zero status code and received SIGSYS > kill -SIGSYS $$ > exit 42 > fi > > # fallback to original bwrap > exec bwrap.orig "$@" > ``` > > 3. `sudo chmod +x /usr/bin/bwrap` > 4. Fix firejail globally (put that in a firejail config file loaded globally) (ex: I put it in `~/.config/firejail/globals.local`): > > ``` > whitelist /usr/libexec/glycin-loaders > noblacklist /usr/bin/bwrap > ``` > > 5. Test it out `firejail --profile=/etc/firejail/firefox.profile gtk-demo` -> Click on "Pixbufs": if you get a moving image you won the fight > > When an acceptable fix has landed for `glycin`, just run: > > ```sh > sudo mv /usr/bin/bwrap.orig /usr/bin/bwrap > ``` I tried this on Arch but it unfortunately did not work for me. Had to resort to installing the [gdk-pixbuf2-noglycin](https://aur.archlinux.org/packages/gdk-pixbuf2-noglycin) and [librsvg-noglycin](https://aur.archlinux.org/packages/librsvg-noglycin) packages from the AUR, which did work.
Author
Owner

@netblue30 commented on GitHub (Dec 19, 2025):

I have a simple fix in git:

I've replaced bwrap inside the sandbox with a "do-nothing" program, so our new bwrap just runs the target without any sandboxing. The replacement is visible only inside the sandbox, bwrap is left untouched in the real filesystem.

This will solve a number of other problems reported so far, like this one: https://github.com/netblue30/firejail/issues/6913. Everywhere you see the newer gdk-pixbuf and/or glycin, a regular seccomp/namespaces sandbox at application level will fail. It will also impact existing AppArmor and SELinux profiles.

I also did a test on Fedora latest. They managed to blow up most gtk applications, anything from simple apps like galculator, all the way up to inkscape and firefox.

I am pushing for a firejail release in January, it will be a lot of fun!

<!-- gh-comment-id:3675254895 --> @netblue30 commented on GitHub (Dec 19, 2025): I have a simple fix in git: I've replaced bwrap inside the sandbox with a "do-nothing" program, so our new bwrap just runs the target without any sandboxing. The replacement is visible only inside the sandbox, bwrap is left untouched in the real filesystem. This will solve a number of other problems reported so far, like this one: https://github.com/netblue30/firejail/issues/6913. Everywhere you see the newer gdk-pixbuf and/or glycin, a regular seccomp/namespaces sandbox at application level will fail. It will also impact existing AppArmor and SELinux profiles. I also did a test on Fedora latest. They managed to blow up most gtk applications, anything from simple apps like galculator, all the way up to inkscape and firefox. I am pushing for a firejail release in January, it will be a lot of fun!
Author
Owner

@rusty-snake commented on GitHub (Dec 19, 2025):

I don't think this is a good idea (in the long run). The most app-internal sandboxes provide better isolation than firejail.

<!-- gh-comment-id:3675685591 --> @rusty-snake commented on GitHub (Dec 19, 2025): I don't think this is a good idea (in the long run). The most app-internal sandboxes provide better isolation than firejail.
Author
Owner

@netblue30 commented on GitHub (Dec 19, 2025):

Sure, no problem. I'll add a command and disable bwrap replacement and let the user play it one way or the other from the profile file. But it needs to be a bwrap based on user namespaces not on SUID.

<!-- gh-comment-id:3675828637 --> @netblue30 commented on GitHub (Dec 19, 2025): Sure, no problem. I'll add a command and disable bwrap replacement and let the user play it one way or the other from the profile file. But it needs to be a bwrap based on user namespaces not on SUID.
Author
Owner

@netblue30 commented on GitHub (Dec 26, 2025):

All set for now, Fedora looks fine. On Arch I've found only gimp and inkscape misbehaving.

To re-enable bwrap use --allow-bwrap.

I'll keep the issue open until the new release in January, thanks @myrslint.

<!-- gh-comment-id:3693040489 --> @netblue30 commented on GitHub (Dec 26, 2025): All set for now, Fedora looks fine. On Arch I've found only gimp and inkscape misbehaving. To re-enable bwrap use --allow-bwrap. I'll keep the issue open until the new release in January, thanks @myrslint.
Author
Owner

@Gerenuk commented on GitHub (Dec 28, 2025):

I'm not sure where to ask, but I'm using Firefox and had the same problem with the file dialog. The AI told me to use the Plasma file dialog instead with:

env GTK_USE_PORTAL=1

noblacklist ${RUNUSER}/bus
ignore dbus-user none
dbus-user filter
dbus-user.talk org.freedesktop.portal.Desktop
dbus-user.talk org.freedesktop.portal.Documents

and it works. I actually like the Plasma file dialog better.

But can someone let me know if this is OK security-wise?

<!-- gh-comment-id:3695004368 --> @Gerenuk commented on GitHub (Dec 28, 2025): I'm not sure where to ask, but I'm using Firefox and had the same problem with the file dialog. The AI told me to use the Plasma file dialog instead with: ``` env GTK_USE_PORTAL=1 noblacklist ${RUNUSER}/bus ignore dbus-user none dbus-user filter dbus-user.talk org.freedesktop.portal.Desktop dbus-user.talk org.freedesktop.portal.Documents ``` and it works. I actually like the Plasma file dialog better. But can someone let me know if this is OK security-wise?
Author
Owner

@netblue30 commented on GitHub (Jan 4, 2026):

@Gerenuk

env GTK_USE_PORTAL=1

noblacklist ${RUNUSER}/bus
ignore dbus-user none
dbus-user filter
dbus-user.talk org.freedesktop.portal.Desktop
dbus-user.talk org.freedesktop.portal.Documents

I don't think there are any security issues with it. I would add it at the end of firefox-common.profile commented out, maybe some other users will find it helpful and integrate it locally in their firefox profile.

https://github.com/netblue30/firejail/blob/master/etc/profile-a-l/firefox-common.profile

<!-- gh-comment-id:3708465498 --> @netblue30 commented on GitHub (Jan 4, 2026): @Gerenuk ``` env GTK_USE_PORTAL=1 noblacklist ${RUNUSER}/bus ignore dbus-user none dbus-user filter dbus-user.talk org.freedesktop.portal.Desktop dbus-user.talk org.freedesktop.portal.Documents ``` I don't think there are any security issues with it. I would add it at the end of firefox-common.profile commented out, maybe some other users will find it helpful and integrate it locally in their firefox profile. https://github.com/netblue30/firejail/blob/master/etc/profile-a-l/firefox-common.profile
Author
Owner

@netblue30 commented on GitHub (Jan 4, 2026):

Closed for now.

<!-- gh-comment-id:3708465678 --> @netblue30 commented on GitHub (Jan 4, 2026): Closed for now.
Author
Owner

@fjthrowaway commented on GitHub (Jan 6, 2026):

the workaround in 0.9.78 works well but it does add a few seconds delay before the program (firefox in this case) starts, or is it just me?
it starts quick with --allow-bwrap

<!-- gh-comment-id:3714322035 --> @fjthrowaway commented on GitHub (Jan 6, 2026): the workaround in 0.9.78 works well but it does add a few seconds delay before the program (firefox in this case) starts, or is it just me? it starts quick with --allow-bwrap
Author
Owner

@netblue30 commented on GitHub (Jan 7, 2026):

No delay here (Debian stable). I've seen the problem so far on Fedora, and on a small number of programs in Arch. I don't think Arch updates all applications when a library changes, but who knows... By Summer it will be all over the place.

<!-- gh-comment-id:3719375272 --> @netblue30 commented on GitHub (Jan 7, 2026): No delay here (Debian stable). I've seen the problem so far on Fedora, and on a small number of programs in Arch. I don't think Arch updates all applications when a library changes, but who knows... By Summer it will be all over the place.
Author
Owner

@NetSysFire commented on GitHub (Jan 8, 2026):

Arch Linux only updates, more accurately, rebuilds packages when a dependency of them gets updated. I think the package maintainers use rebuilderd for this but unsure. Arch Linux in general does not statically compile things and soname bumps would break a great deal if not all of the relevant applications are updated (a so called partial upgrade).

Whatever the cause of the performance issues, it will indeed likely propagate.

<!-- gh-comment-id:3721330046 --> @NetSysFire commented on GitHub (Jan 8, 2026): Arch Linux only updates, more accurately, rebuilds packages when a dependency of them gets updated. I think the package maintainers use rebuilderd for this but unsure. Arch Linux in general does not statically compile things and soname bumps would break a great deal if not all of the relevant applications are updated (a so called [partial upgrade](https://wiki.archlinux.org/title/System_maintenance#Partial_upgrades_are_unsupported)). Whatever the cause of the performance issues, it will indeed likely propagate.
Author
Owner

@spaceman7777 commented on GitHub (Jan 22, 2026):

Hmm. So, this change to default firejail to replace bwrap with a dummy/non-functional fbwrap application, committed as part of #7009 , has me a bit worried.

Recently, Claude Code, and quite a few other AI Agent tools, have taken to carefully blocking the agent's capabilities in an extremely fine-grained way using bubblewrap.

It has also become a very common development pattern in recent months to let coding agents skip all user permissions checks, and run continuously for many hours (or even days) at a time.

I'm particularly concerned about folks who are using "Firejail by Default". Because, with this new behavior, if they happen to invoke one of these AI Agents from a firejailed application, these security checks will now suddenly be completely bypassed.

I'm sure there are quite a few people out there that were already using both firejail and Claude Code on their systems, and are executing AI Agents from a wide variety of applications that they have configured with a firejail config.

But, unless they've read this thread, and the patches over on #7009 , they won't know that their coding agents are now running in a radically different sandbox configuration.

Anyway: I would highly recommend not disabling bubblewrap by default via fbwrap, and instead finding a way to disable it on an as-needed basis.

The potential blast radius for a suddenly un-sandboxed AI Agent can be very large.

@netblue30 @kmk3

<!-- gh-comment-id:3783332258 --> @spaceman7777 commented on GitHub (Jan 22, 2026): Hmm. So, this change to default firejail to replace bwrap with a dummy/non-functional fbwrap application, committed as part of #7009 , has me a bit worried. Recently, Claude Code, and quite a few other AI Agent tools, have taken to carefully blocking the agent's capabilities in an extremely fine-grained way using bubblewrap. It has also become a very common development pattern in recent months to let coding agents skip all user permissions checks, and run continuously for many hours (or even days) at a time. I'm particularly concerned about folks who are using "Firejail by Default". Because, with this new behavior, if they happen to invoke one of these AI Agents from a firejailed application, these security checks will now suddenly be completely bypassed. I'm sure there are quite a few people out there that were already using both firejail and Claude Code on their systems, and are executing AI Agents from a wide variety of applications that they have configured with a firejail config. But, unless they've read this thread, and the patches over on #7009 , they won't know that their coding agents are now running in a radically different sandbox configuration. Anyway: I would highly recommend *not* disabling bubblewrap by default via fbwrap, and instead finding a way to disable it on an as-needed basis. The potential blast radius for a suddenly un-sandboxed AI Agent can be very large. @netblue30 @kmk3
Author
Owner

@spaceman7777 commented on GitHub (Jan 22, 2026):

An example to illustrate why changing the default behavior to replace bwrap with a fake version is a dangerous change:
So, the default profile for Jetbrains IDEs, like Intellij/idea.sh, allows full access to ssh, ~/.ssh , the internet, and large parts of the $HOME directory.

Jetbrains IDEs (and VSCode, and its many variants) currently launch Claude Code as a subprocess, from the IDE.

CC and others do some basic checking for commands that aren't allowed by the currently configured policy, but several rely on Bubblewrap to back this up, and to truly prevent bad things from happening. (Via subprocesses of allowed commands, and a variety of other sneaky things that various AI Models have been known to try.)

Some worst case scenarios involve: Claude Code can now access the system's ~/.ssh directory, and any API keys/secrets stored in projects in $HOME, and send them to an external server.

Even worse, with this change, Claude Code can now actually edit its own configuration files at ~/.claude , which is a whole extra can of worms.

Anyway, I hope that makes my concern a bit more clear.

<!-- gh-comment-id:3787369096 --> @spaceman7777 commented on GitHub (Jan 22, 2026): An example to illustrate why changing the default behavior to replace bwrap with a fake version is a dangerous change: So, the default profile for Jetbrains IDEs, like Intellij/idea.sh, allows full access to ssh, ~/.ssh , the internet, and large parts of the $HOME directory. Jetbrains IDEs (and VSCode, and its many variants) currently launch Claude Code as a subprocess, from the IDE. CC and others do some basic checking for commands that aren't allowed by the currently configured policy, but several rely on Bubblewrap to back this up, and to truly prevent bad things from happening. (Via subprocesses of allowed commands, and a variety of other sneaky things that various AI Models have been known to try.) Some worst case scenarios involve: Claude Code can now access the system's ~/.ssh directory, and any API keys/secrets stored in projects in $HOME, and send them to an external server. Even worse, with this change, Claude Code can now actually edit its own configuration files at ~/.claude , which is a whole extra can of worms. Anyway, I hope that makes my concern a bit more clear.
Author
Owner

@Dieterbe commented on GitHub (Jan 23, 2026):

thanks for raising this @spaceman7777 . It seems you're saying that with the (committed) code change, running applications via firejail can be actually worsen security than running applications without firejail. That seems definitely like a problem to address.
unfortunately it seems this was released in 0.9.78, 2 days ago https://github.com/netblue30/firejail/releases/tag/0.9.78
I have emailed @netblue30 as per instructions in https://github.com/netblue30/firejail/blob/master/SECURITY.md

<!-- gh-comment-id:3789659212 --> @Dieterbe commented on GitHub (Jan 23, 2026): thanks for raising this @spaceman7777 . It seems you're saying that with the (committed) code change, running applications via firejail can be actually worsen security than running applications without firejail. That seems definitely like a problem to address. unfortunately it seems this was released in 0.9.78, 2 days ago https://github.com/netblue30/firejail/releases/tag/0.9.78 I have emailed @netblue30 as per instructions in https://github.com/netblue30/firejail/blob/master/SECURITY.md
Author
Owner

@rusty-snake commented on GitHub (Jan 23, 2026):

Warned you: https://github.com/netblue30/firejail/issues/6906#issuecomment-3675685591

<!-- gh-comment-id:3790893206 --> @rusty-snake commented on GitHub (Jan 23, 2026): Warned you: https://github.com/netblue30/firejail/issues/6906#issuecomment-3675685591
Author
Owner

@rusty-snake commented on GitHub (Jan 23, 2026):

One could also ask glycin/claude guys to detect tampering with bwrap executable and reject.

<!-- gh-comment-id:3790898845 --> @rusty-snake commented on GitHub (Jan 23, 2026): One could also ask glycin/claude guys to detect tampering with bwrap executable and reject.
Author
Owner

@netblue30 commented on GitHub (Jan 27, 2026):

@spaceman7777:

So, the default profile for Jetbrains IDEs, like Intellij/idea.sh, allows full access to ssh, ~/.ssh , the internet, and large parts of the $HOME directory.

That's quite easy to fix, just blacklist ~/.ssh and you are done. Send a pull request and we will merge it in. Somehow the author of that specific profile considered ~/.ssh as being necessary (is he is running git directly from the graphical interface?), or he just made a mistake.

Maybe we should make a rule here: if a program already uses a sandbox we should not attempt to build a profile for it. There are so many unsandboxed apps out there, about 20000 in Debian alone, we shouldn't waste our time with applications that are already sandboxed. As an example, we don't touch snap and flatpak apps, instead we go for appimage because nobody builds sandboxes for them.

Recently, Claude Code, and quite a few other AI Agent tools, have taken to carefully blocking the agent's capabilities in an extremely fine-grained way using bubblewrap.

No intention to sandbox them here - closed source code. As I said, 20000 open-source apps in Debian alone. With 1000 handled by Firejail, we are just scratching the surface.

Something you should look for when dealing with programs using bwrap:

  • disable capabilities (--cap-* on the command line). This disables several millions of lines of code deep inside the Linux kernel. There should be no reason for non-root programs to have them enabled.
  • enable seccomp (--seccomp and/or --add-seccomp commands). This disables another huge chunk of kernel code.

I've seen very few people using a seccomp-bpf filter in bwrap, probably because they don't have one. You can grab our default seccomp filter for 64bit architecture from /usr/lib/firejail/seccomp. Just pass it to bwrap and you should be fine.

<!-- gh-comment-id:3807793175 --> @netblue30 commented on GitHub (Jan 27, 2026): @spaceman7777: > So, the default profile for Jetbrains IDEs, like Intellij/idea.sh, allows full access to ssh, ~/.ssh , the internet, and large parts of the $HOME directory. That's quite easy to fix, just blacklist ~/.ssh and you are done. Send a pull request and we will merge it in. Somehow the author of that specific profile considered ~/.ssh as being necessary (is he is running git directly from the graphical interface?), or he just made a mistake. Maybe we should make a rule here: if a program already uses a sandbox we should not attempt to build a profile for it. There are so many unsandboxed apps out there, about 20000 in Debian alone, we shouldn't waste our time with applications that are already sandboxed. As an example, we don't touch snap and flatpak apps, instead we go for appimage because nobody builds sandboxes for them. > Recently, Claude Code, and quite a few other AI Agent tools, have taken to carefully blocking the agent's capabilities in an extremely fine-grained way using bubblewrap. No intention to sandbox them here - closed source code. As I said, 20000 open-source apps in Debian alone. With 1000 handled by Firejail, we are just scratching the surface. Something you should look for when dealing with programs using bwrap: * disable capabilities (--cap-* on the command line). This disables several millions of lines of code deep inside the Linux kernel. There should be no reason for non-root programs to have them enabled. * enable seccomp (--seccomp and/or --add-seccomp commands). This disables another huge chunk of kernel code. I've seen very few people using a seccomp-bpf filter in bwrap, probably because they don't have one. You can grab our default seccomp filter for 64bit architecture from /usr/lib/firejail/seccomp. Just pass it to bwrap and you should be fine.
Author
Owner

@SkewedZeppelin commented on GitHub (Jan 27, 2026):

Somehow the author of that specific profile considered ~/.ssh as being necessary (is he is running git directly from the graphical interface?), or he just made a mistake.

I authored it in 2017 and allowed it because most people use git from within the IDE and expect that to work.
I personally just use the CLI. And these days I don't even run any IDE on my host, but each within its own dedicated VM without access to keys/secrets/ssh, which is something I recommend everyone to do.

edit: iirc advanced users were/are always expected to make their own overrides if they want stricter profiles

<!-- gh-comment-id:3807928794 --> @SkewedZeppelin commented on GitHub (Jan 27, 2026): > Somehow the author of that specific profile considered ~/.ssh as being necessary (is he is running git directly from the graphical interface?), or he just made a mistake. I authored it in 2017 and allowed it because most people use git from within the IDE and expect that to work. I personally just use the CLI. And these days I don't even run any IDE on my host, but each within its own dedicated VM without access to keys/secrets/ssh, which is something I recommend everyone to do. edit: iirc advanced users were/are always expected to make their own overrides if they want stricter profiles
Author
Owner

@netblue30 commented on GitHub (Jan 27, 2026):

most people use git from within the IDE and expect that to work.

That's what I thought! I used myself for a long time svn+ssh directly from emacs. Somehow in these development editors people go directly to the code repository (git, svn, whatever), do merges, and whatnot. The dedicated VM is a good idea!

One more example: ssh over http/https:

Some cloud providers give the developer a web page looking like a bash terminal, where they invite the developer to ssh into the server. I've seen it first on Digital Ocean, no idea how is implemented. It is a convenience feature, and requires the presence of ~/.ssh directory inside the browser.

<!-- gh-comment-id:3808031907 --> @netblue30 commented on GitHub (Jan 27, 2026): > most people use git from within the IDE and expect that to work. That's what I thought! I used myself for a long time svn+ssh directly from emacs. Somehow in these development editors people go directly to the code repository (git, svn, whatever), do merges, and whatnot. The dedicated VM is a good idea! One more example: ssh over http/https: Some cloud providers give the developer a web page looking like a bash terminal, where they invite the developer to ssh into the server. I've seen it first on Digital Ocean, no idea how is implemented. It is a convenience feature, and requires the presence of ~/.ssh directory inside the browser.
Author
Owner

@spaceman7777 commented on GitHub (Jan 29, 2026):

I was only using the descriptions of potential functionality above as examples of why introducing this new behavior to peoples' existing, already-vetted, setups might be a bad move, on the whole, i.e., the stuff that bubblewrap is being widely used to sandbox and secure isn't trivial in scale, and quietly disabling it on people's systems will almost certainly bite many (some, quite severely).

Anyway. My suggestion is that It would be better to just have fbwrap fail, unless an option is specifically set to "bypass bwrap", (in addition to the new flag which allows actual bwrap to run).

Just, some sort of extra logic in fbwrap, to ensure it isn't just running any old program, without the intended sandboxing, would be great. Because, as it stands, this new functionality introduces a rather broad security vulnerability.

(Consider the case where some other program quietly introduced new logic that replaced firejail invocations with a fake-firejail that runs all of the previously-firejail-sandboxed applications, and subprocesses of firejailed applications, without any of firejail's security restrictions. I think many around here would find functionality of that sort quite concerning. That's the perspective I wanted to draw attention to.)

If I were to guess, fixing this issue now, when it is still primarily affecting a small number of applications, will likely prevent a much larger headache down the line.

<!-- gh-comment-id:3816569689 --> @spaceman7777 commented on GitHub (Jan 29, 2026): I was only using the descriptions of potential functionality above as examples of why introducing this new behavior to peoples' existing, already-vetted, setups might be a bad move, on the whole, i.e., the stuff that bubblewrap is being widely used to sandbox and secure isn't trivial in scale, and quietly disabling it on people's systems will almost certainly bite many (some, quite severely). Anyway. My suggestion is that It would be better to just have fbwrap fail, unless an option is specifically set to "bypass bwrap", (in addition to the new flag which allows actual bwrap to run). Just, some sort of extra logic in fbwrap, to ensure it isn't just running any old program, without the intended sandboxing, would be great. Because, as it stands, this new functionality introduces a rather broad security vulnerability. (Consider the case where some other program quietly introduced new logic that replaced `firejail` invocations with a `fake-firejail` that runs all of the previously-firejail-sandboxed applications, and subprocesses of firejailed applications, without any of firejail's security restrictions. I think many around here would find functionality of that sort quite concerning. That's the perspective I wanted to draw attention to.) If I were to guess, fixing this issue now, when it is still primarily affecting a small number of applications, will likely prevent a much larger headache down the line.
Author
Owner

@netblue30 commented on GitHub (Jan 30, 2026):

Consider the case where some other program quietly introduced new logic that replaced firejail invocations with a fake-firejail

This is very very bad, don't do it! Firejail is SUID! The moment you call firejail from inside your program, any decent security monitoring tool will detect the rise in privileges and kill your program.

The same goes for user namespace. Userns is currently interpreted as a rise in privileges by both firejail and apparmor. And so does bwrap. Like a bunch of attack dogs chasing the same rabbit, they always end up killing each other.

And here you have a firejail user running Tor browser - actual glycin/bwrap bug reported earlier: https://github.com/netblue30/firejail/issues/6913. Everything worked fine yesterday, until he updated his system. And now Tor goes down in flames because gnome pixbuf cannot securely paint windows decorations. The irony in this is absolutely ridiculous!

Actually, most users posting here also have apparmor running. Apparmor is much faster than firejail, I'm starting to think it was apparmor crashing the program. Anyway, the problem affected about 200 profiles in firejail. It also affected any user running apparmor without firejail. This is a github link to a large collection of apparmor profiles and the problem report: https://github.com/roddhjav/apparmor.d/issues/881

<!-- gh-comment-id:3823941290 --> @netblue30 commented on GitHub (Jan 30, 2026): > Consider the case where some other program quietly introduced new logic that replaced firejail invocations with a fake-firejail This is very very bad, don't do it! Firejail is SUID! The moment you call firejail from inside your program, any decent security monitoring tool will detect the rise in privileges and kill your program. The same goes for user namespace. Userns is currently interpreted as a rise in privileges by both firejail and apparmor. And so does bwrap. Like a bunch of attack dogs chasing the same rabbit, they always end up killing each other. And here you have a firejail user running Tor browser - actual glycin/bwrap bug reported earlier: https://github.com/netblue30/firejail/issues/6913. Everything worked fine yesterday, until he updated his system. And now Tor goes down in flames because gnome pixbuf cannot securely paint windows decorations. The irony in this is absolutely ridiculous! Actually, most users posting here also have apparmor running. Apparmor is much faster than firejail, I'm starting to think it was apparmor crashing the program. Anyway, the problem affected about 200 profiles in firejail. It also affected any user running apparmor without firejail. This is a github link to a large collection of apparmor profiles and the problem report: https://github.com/roddhjav/apparmor.d/issues/881
Author
Owner

@spaceman7777 commented on GitHub (Jan 31, 2026):

Consider the case where some other program quietly introduced new logic that replaced firejail invocations with a fake-firejail

This is very very bad, don't do it! Firejail is SUID! The moment you call firejail from inside your program, any decent security monitoring tool will detect the rise in privileges and kill your program.

Yeah, I was just making the comparison. Like, if you updated the minor version of a program on your system, and found out later that it had started silently replacing firejail invocations with fake-firejail invocations, it would be a bit upsetting.

That's the situation many users have been put into by this too-broad change to bubblewrap behavior.

<!-- gh-comment-id:3827862159 --> @spaceman7777 commented on GitHub (Jan 31, 2026): > > Consider the case where some other program quietly introduced new logic that replaced firejail invocations with a fake-firejail > > This is very very bad, don't do it! Firejail is SUID! The moment you call firejail from inside your program, any decent security monitoring tool will detect the rise in privileges and kill your program. Yeah, I was just making the comparison. Like, if you updated the minor version of a program on your system, and found out later that it had started silently replacing firejail invocations with fake-firejail invocations, it would be a bit upsetting. That's the situation many users have been put into by this too-broad change to bubblewrap behavior.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/firejail#3412
No description provided.