[GH-ISSUE #5819] calibre: ImportError: /home/bandura/.local/lib/python3.9/site-packages/_dbus_bindings.cpython-39-x86_64-linux-gnu.so: failed to map segment from shared object #3104

Closed
opened 2026-05-05 09:44:25 -06:00 by gitea-mirror · 2 comments
Owner

Originally created by @marek22k on GitHub (May 6, 2023).
Original GitHub issue: https://github.com/netblue30/firejail/issues/5819

Description

Failed to start calibre.

Steps to Reproduce

Install firejail
Install calibre via apt

Expected behavior

Calibre starts

Actual behavior

$firejail --profile=calibre calibre
Reading profile /etc/firejail/calibre.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-programs.inc
Reading profile /etc/firejail/disable-xdg.inc
Reading profile /etc/firejail/whitelist-var-common.inc
Warning: networking feature is disabled in Firejail configuration file
Seccomp list in: !chroot, check list: @default-keep, prelist: unknown,
Parent pid 246062, child pid 246063
Warning: not remounting /home/bandura/.ssh/config
Seccomp list in: !chroot, check list: @default-keep, prelist: unknown,
Child process initialized in 198.97 ms
Warning: an existing sandbox was detected. /usr/bin/calibre will run without any additional sandboxing features
Traceback (most recent call last):
  File "/usr/bin/calibre", line 20, in <module>
    sys.exit(calibre())
  File "/usr/lib/calibre/calibre/gui_launch.py", line 70, in calibre
    init_dbus()
  File "/usr/lib/calibre/calibre/gui_launch.py", line 42, in init_dbus
    from dbus.mainloop.glib import DBusGMainLoop, threads_init
  File "/home/bandura/.local/lib/python3.9/site-packages/dbus/__init__.py", line 71, in <module>
    import dbus.types as types
  File "/home/bandura/.local/lib/python3.9/site-packages/dbus/types.py", line 10, in <module>
    from _dbus_bindings import (
ImportError: /home/bandura/.local/lib/python3.9/site-packages/_dbus_bindings.cpython-39-x86_64-linux-gnu.so: failed to map segment from shared object

Parent is shutting down, bye...

Behavior without a profile

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

Opens a the calibre without crash

Environment

  • Linux distribution and version (e.g. "Ubuntu 20.04" or "Arch Linux")
    Parrot OS, Debian-based
  • Firejail version (firejail --version).
$firejail --version
firejail version 0.9.72

Compile time support:
	- always force nonewprivs support is disabled
	- AppArmor support is enabled
	- AppImage support is enabled
	- chroot support is enabled
	- D-BUS proxy support is enabled
	- file transfer support is enabled
	- firetunnel support is disabled
	- IDS support is enabled
	- networking support is enabled
	- output logging is enabled
	- overlayfs support is disabled
	- private-home support is enabled
	- private-cache and tmpfs as user enabled
	- SELinux support is enabled
	- user namespace support is enabled
	- X11 sandboxing support is enabled

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).

Log

Output of LC_ALL=C firejail /path/to/program

$LC_ALL=C firejail calibre
Reading profile /etc/firejail/calibre.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-programs.inc
Reading profile /etc/firejail/disable-xdg.inc
Reading profile /etc/firejail/whitelist-var-common.inc
Warning: networking feature is disabled in Firejail configuration file
Seccomp list in: !chroot, check list: @default-keep, prelist: unknown,
Parent pid 247026, child pid 247027
Warning: not remounting /home/bandura/.ssh/config
Seccomp list in: !chroot, check list: @default-keep, prelist: unknown,
Child process initialized in 197.96 ms
Warning: an existing sandbox was detected. /usr/bin/calibre will run without any additional sandboxing features
Traceback (most recent call last):
  File "/usr/bin/calibre", line 20, in <module>
    sys.exit(calibre())
  File "/usr/lib/calibre/calibre/gui_launch.py", line 70, in calibre
    init_dbus()
  File "/usr/lib/calibre/calibre/gui_launch.py", line 42, in init_dbus
    from dbus.mainloop.glib import DBusGMainLoop, threads_init
  File "/home/bandura/.local/lib/python3.9/site-packages/dbus/__init__.py", line 71, in <module>
    import dbus.types as types
  File "/home/bandura/.local/lib/python3.9/site-packages/dbus/types.py", line 10, in <module>
    from _dbus_bindings import (
ImportError: /home/bandura/.local/lib/python3.9/site-packages/_dbus_bindings.cpython-39-x86_64-linux-gnu.so: failed to map segment from shared object

Parent is shutting down, bye...

Output of LC_ALL=C firejail --debug /path/to/program

https://paste.i2pd.xyz/?5ec69f5735a1cc1a#EWYFSXLG97KoaZoN8xoy3YtQAFeipqdjUHv3swUQZ8Lh
https://gist.github.com/marek22k/7d83befab5a8e4050756dced54359ff7

Originally created by @marek22k on GitHub (May 6, 2023). Original GitHub issue: https://github.com/netblue30/firejail/issues/5819 <!-- 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 Failed to start calibre. ### Steps to Reproduce Install firejail Install calibre via apt ### Expected behavior Calibre starts ### Actual behavior ``` $firejail --profile=calibre calibre Reading profile /etc/firejail/calibre.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-programs.inc Reading profile /etc/firejail/disable-xdg.inc Reading profile /etc/firejail/whitelist-var-common.inc Warning: networking feature is disabled in Firejail configuration file Seccomp list in: !chroot, check list: @default-keep, prelist: unknown, Parent pid 246062, child pid 246063 Warning: not remounting /home/bandura/.ssh/config Seccomp list in: !chroot, check list: @default-keep, prelist: unknown, Child process initialized in 198.97 ms Warning: an existing sandbox was detected. /usr/bin/calibre will run without any additional sandboxing features Traceback (most recent call last): File "/usr/bin/calibre", line 20, in <module> sys.exit(calibre()) File "/usr/lib/calibre/calibre/gui_launch.py", line 70, in calibre init_dbus() File "/usr/lib/calibre/calibre/gui_launch.py", line 42, in init_dbus from dbus.mainloop.glib import DBusGMainLoop, threads_init File "/home/bandura/.local/lib/python3.9/site-packages/dbus/__init__.py", line 71, in <module> import dbus.types as types File "/home/bandura/.local/lib/python3.9/site-packages/dbus/types.py", line 10, in <module> from _dbus_bindings import ( ImportError: /home/bandura/.local/lib/python3.9/site-packages/_dbus_bindings.cpython-39-x86_64-linux-gnu.so: failed to map segment from shared object Parent is shutting down, bye... ``` ### Behavior without a profile _What changed calling `LC_ALL=C firejail --noprofile /path/to/program` in a terminal?_ Opens a the calibre without crash ### Environment - Linux distribution and version (e.g. "Ubuntu 20.04" or "Arch Linux") Parrot OS, Debian-based - Firejail version (`firejail --version`). ``` $firejail --version firejail version 0.9.72 Compile time support: - always force nonewprivs support is disabled - AppArmor support is enabled - AppImage support is enabled - chroot support is enabled - D-BUS proxy support is enabled - file transfer support is enabled - firetunnel support is disabled - IDS support is enabled - networking support is enabled - output logging is enabled - overlayfs support is disabled - private-home support is enabled - private-cache and tmpfs as user enabled - SELinux support is enabled - user namespace support is enabled - X11 sandboxing support is enabled ``` ### 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). ### Log <details> <summary>Output of <code>LC_ALL=C firejail /path/to/program</code></summary> <p> ``` $LC_ALL=C firejail calibre Reading profile /etc/firejail/calibre.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-programs.inc Reading profile /etc/firejail/disable-xdg.inc Reading profile /etc/firejail/whitelist-var-common.inc Warning: networking feature is disabled in Firejail configuration file Seccomp list in: !chroot, check list: @default-keep, prelist: unknown, Parent pid 247026, child pid 247027 Warning: not remounting /home/bandura/.ssh/config Seccomp list in: !chroot, check list: @default-keep, prelist: unknown, Child process initialized in 197.96 ms Warning: an existing sandbox was detected. /usr/bin/calibre will run without any additional sandboxing features Traceback (most recent call last): File "/usr/bin/calibre", line 20, in <module> sys.exit(calibre()) File "/usr/lib/calibre/calibre/gui_launch.py", line 70, in calibre init_dbus() File "/usr/lib/calibre/calibre/gui_launch.py", line 42, in init_dbus from dbus.mainloop.glib import DBusGMainLoop, threads_init File "/home/bandura/.local/lib/python3.9/site-packages/dbus/__init__.py", line 71, in <module> import dbus.types as types File "/home/bandura/.local/lib/python3.9/site-packages/dbus/types.py", line 10, in <module> from _dbus_bindings import ( ImportError: /home/bandura/.local/lib/python3.9/site-packages/_dbus_bindings.cpython-39-x86_64-linux-gnu.so: failed to map segment from shared object Parent is shutting down, bye... ``` </p> </details> <details> <summary>Output of <code>LC_ALL=C firejail --debug /path/to/program</code></summary> <p> <!-- If the output is too long to embed it into the comment, create a secret gist at https://gist.github.com/ and link it here. --> ``` https://paste.i2pd.xyz/?5ec69f5735a1cc1a#EWYFSXLG97KoaZoN8xoy3YtQAFeipqdjUHv3swUQZ8Lh https://gist.github.com/marek22k/7d83befab5a8e4050756dced54359ff7 ``` </p> </details>
gitea-mirror 2026-05-05 09:44:25 -06:00
Author
Owner

@ghost commented on GitHub (May 6, 2023):

Let me open with a general remark. Your output suggests using Firejail's firecfg desktop integration. That's fine, but it implies some extra attention needs to be given regarding paths. You can check that most likely /usr/local/bin/calibre is a symlink to /usr/bin/firejail. So when you use firejail calibre it actually executes firejail twice, which can result in unexpected behaviour:

Actual behavior
$ firejail --profile=calibre calibre
[...]
Warning: an existing sandbox was detected. /usr/bin/calibre will run without any additional sandboxing features
[...]

Output of LC_ALL=C firejail /path/to/program
$ LC_ALL=C firejail calibre
[...]
Warning: an existing sandbox was detected. /usr/bin/calibre will run without any additional sandboxing features
[...]

Output of LC_ALL=C firejail --debug /path/to/program
https://gist.github.com/marek22k/7d83befab5a8e4050756dced54359ff7?#file-gistfile1-txt-L1418

Whenever you see that warning, be aware of this and try to avoid it by using full paths.

Now, let's move on to the problem at hand. According to your output python 3.9 packages are located under /home/bandura/.local/lib/python3.9/site-packages. Although /etc/firejail/calibre.profile does not block the use of Python (it does not include disable-interpreters.inc), it does have include disable-exec.inc. And that means python scripts from /home/bandura/.local/lib/python3.9/site-packages are not executable:

https://gist.github.com/marek22k/7d83befab5a8e4050756dced54359ff7?#file-gistfile1-txt-L1044

What happens when you add ignore noexec ${HOME} in ~/.config/firejail/calibre.local?

<!-- gh-comment-id:1537155474 --> @ghost commented on GitHub (May 6, 2023): Let me open with a general remark. Your output suggests using Firejail's `firecfg` desktop integration. That's fine, but it implies some extra attention needs to be given regarding paths. You can check that most likely /usr/local/bin/calibre is a symlink to /usr/bin/firejail. So when you use `firejail calibre` it actually executes firejail twice, which can result in unexpected behaviour: > Actual behavior $ firejail --profile=calibre calibre [...] Warning: an existing sandbox was detected. /usr/bin/calibre will run without any additional sandboxing features [...] > Output of LC_ALL=C firejail /path/to/program $ LC_ALL=C firejail calibre [...] Warning: an existing sandbox was detected. /usr/bin/calibre will run without any additional sandboxing features [...] > Output of LC_ALL=C firejail --debug /path/to/program https://gist.github.com/marek22k/7d83befab5a8e4050756dced54359ff7?#file-gistfile1-txt-L1418 Whenever you see that warning, be aware of this and try to avoid it by using full paths. Now, let's move on to the problem at hand. According to your output python 3.9 packages are located under /home/bandura/.local/lib/python3.9/site-packages. Although /etc/firejail/calibre.profile does not block the use of Python (it does not include disable-interpreters.inc), it does have `include disable-exec.inc`. And that means python scripts from /home/bandura/.local/lib/python3.9/site-packages are not executable: https://gist.github.com/marek22k/7d83befab5a8e4050756dced54359ff7?#file-gistfile1-txt-L1044 What happens when you add `ignore noexec ${HOME}` in ~/.config/firejail/calibre.local?
Author
Owner

@marek22k commented on GitHub (May 6, 2023):

Thanks for the tip with the doubled firejail!

Now it seems I have somehow broken my Calibre installation (maybe by updating pip packages?!). Now the following message appears with and without firejail:

$firejail --profile=calibre /usr/bin/calibre
Reading profile /etc/firejail/calibre.profile
Reading profile /etc/firejail/calibre.local
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-programs.inc
Reading profile /etc/firejail/disable-xdg.inc
Reading profile /etc/firejail/whitelist-var-common.inc
Warning: networking feature is disabled in Firejail configuration file
Seccomp list in: !chroot, check list: @default-keep, prelist: unknown,
Parent pid 250580, child pid 250581
Seccomp list in: !chroot, check list: @default-keep, prelist: unknown,
Child process initialized in 135.11 ms
Traceback (most recent call last):
  File "/usr/bin/calibre", line 20, in <module>
    sys.exit(calibre())
  File "/usr/lib/calibre/calibre/gui_launch.py", line 73, in calibre
    main(args)
  File "/usr/lib/calibre/calibre/gui2/main.py", line 516, in main
    run_main(app, opts, args, gui_debug, si)
  File "/usr/lib/calibre/calibre/gui2/main.py", line 523, in run_main
    return run_gui(opts, args, app, gui_debug=gui_debug)
  File "/usr/lib/calibre/calibre/gui2/main.py", line 388, in run_gui
    run_gui_(opts, args, app, gui_debug)
  File "/usr/lib/calibre/calibre/gui2/main.py", line 398, in run_gui_
    from calibre.gui2.ui import Main
  File "/usr/lib/calibre/calibre/gui2/ui.py", line 32, in <module>
    from calibre.customize.ui import available_store_plugins, interface_actions
  File "/usr/lib/calibre/calibre/customize/ui.py", line 18, in <module>
    from calibre.customize.builtins import plugins as builtin_plugins
  File "/usr/lib/calibre/calibre/customize/builtins.py", line 752, in <module>
    from calibre.devices.smart_device_app.driver import SMART_DEVICE_APP
  File "/usr/lib/calibre/calibre/devices/smart_device_app/driver.py", line 2044, in <module>
    from zeroconf import (BadTypeInNameException, _HAS_A_TO_Z,
ImportError: cannot import name '_HAS_A_TO_Z' from 'zeroconf' (/home/bandura/.local/lib/python3.9/site-packages/zeroconf/__init__.py)

Parent is shutting down, bye...

I would therefore close the issue as "not planned", since I unfortunately cannot reproduce it anymore.

<!-- gh-comment-id:1537167003 --> @marek22k commented on GitHub (May 6, 2023): Thanks for the tip with the doubled firejail! Now it seems I have somehow broken my Calibre installation (maybe by updating pip packages?!). Now the following message appears with and without firejail: ``` $firejail --profile=calibre /usr/bin/calibre Reading profile /etc/firejail/calibre.profile Reading profile /etc/firejail/calibre.local 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-programs.inc Reading profile /etc/firejail/disable-xdg.inc Reading profile /etc/firejail/whitelist-var-common.inc Warning: networking feature is disabled in Firejail configuration file Seccomp list in: !chroot, check list: @default-keep, prelist: unknown, Parent pid 250580, child pid 250581 Seccomp list in: !chroot, check list: @default-keep, prelist: unknown, Child process initialized in 135.11 ms Traceback (most recent call last): File "/usr/bin/calibre", line 20, in <module> sys.exit(calibre()) File "/usr/lib/calibre/calibre/gui_launch.py", line 73, in calibre main(args) File "/usr/lib/calibre/calibre/gui2/main.py", line 516, in main run_main(app, opts, args, gui_debug, si) File "/usr/lib/calibre/calibre/gui2/main.py", line 523, in run_main return run_gui(opts, args, app, gui_debug=gui_debug) File "/usr/lib/calibre/calibre/gui2/main.py", line 388, in run_gui run_gui_(opts, args, app, gui_debug) File "/usr/lib/calibre/calibre/gui2/main.py", line 398, in run_gui_ from calibre.gui2.ui import Main File "/usr/lib/calibre/calibre/gui2/ui.py", line 32, in <module> from calibre.customize.ui import available_store_plugins, interface_actions File "/usr/lib/calibre/calibre/customize/ui.py", line 18, in <module> from calibre.customize.builtins import plugins as builtin_plugins File "/usr/lib/calibre/calibre/customize/builtins.py", line 752, in <module> from calibre.devices.smart_device_app.driver import SMART_DEVICE_APP File "/usr/lib/calibre/calibre/devices/smart_device_app/driver.py", line 2044, in <module> from zeroconf import (BadTypeInNameException, _HAS_A_TO_Z, ImportError: cannot import name '_HAS_A_TO_Z' from 'zeroconf' (/home/bandura/.local/lib/python3.9/site-packages/zeroconf/__init__.py) Parent is shutting down, bye... ``` I would therefore close the issue as "not planned", since I unfortunately cannot reproduce it anymore.
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#3104
No description provided.