Bug#1144487: apostrophe: fails to start with Python 3.14: cannot pickle 'ApostropheTextView' object

H4F&P <[email protected]>
Newsgroups gmane.linux.debian.devel.bugs.rc
Message-ID <178682285520.1446242.17153441568379380689.reportbug__38416.1912415706$1786822999$gmane$org@workstation.internal>
Package: apostrophe
Version: 3.4-2
Severity: grave
Tags: upstream
Justification: renders package unusable
X-Debbugs-Cc: [email protected]

Dear Maintainer,

Apostrophe fails to start on a system with Python 3.14 as the default
python3. The window never appears.

What I did:

  $ apostrophe

What happened:

Two tracebacks are printed. The first one:

  File "/usr/lib/python3/dist-packages/apostrophe/text_view.py", line 139, in __init__
    self.markup = MarkupHandler(self)
  File "/usr/lib/python3/dist-packages/apostrophe/text_view_markup_handler.py", line 142, in __init__
    Process(target=self.parse, args=(child_conn,), daemon=True).start()
  [...]
  File "/usr/lib/python3.14/multiprocessing/popen_forkserver.py", line 47, in _launch
    reduction.dump(process_obj, buf)
  File "/usr/lib/python3.14/multiprocessing/reduction.py", line 60, in dump
    ForkingPickler(file, protocol).dump(obj)
  TypeError: cannot pickle 'ApostropheTextView' object
  when serializing dict item 'textview'
  when serializing apostrophe.text_view_markup_handler.MarkupHandler state
  [...]

Followed by a secondary failure caused by the first:

  File "/usr/lib/python3/dist-packages/apostrophe/application.py", line 261, in _set_color_scheme
    window.textview.markup.on_style_updated()
  AttributeError: 'ApostropheTextView' object has no attribute 'markup'

What I expected:

The editor window to open normally.

Cause:

Python 3.14 changed the default multiprocessing start method on POSIX
platforms from 'fork' to 'forkserver':
https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods

Upstream bug and patch:
https://gitlab.gnome.org/World/apostrophe/-/issues/669

Alpine has already applied that patch:
https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/103093

Workaround:

Forcing the 'fork' start method before Apostrophe creates its processes
makes the application start normally.

-- System Information:
Debian Release: forky/sid
  APT prefers testing
  APT policy: (500, 'testing'), (50, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 7.1.7+deb14-amd64 (SMP w/32 CPU threads; PREEMPT)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages apostrophe depends on:
qii  dconf-gsettings-backend [gsettings-backend]  0.49.0-4+b1
ii  gir1.2-adw-1                                 1.9.2-1
ii  gir1.2-glib-2.0                              2.88.3-2
ii  gir1.2-gtk-4.0                               4.22.4+ds-1
ii  gir1.2-spelling-1                            0.4.10-2
ii  gir1.2-webkit-6.0                            2.52.5-1
ii  libjs-mathjax                                2.7.9+dfsg-1
ii  python3                                      3.14.6-1
ii  python3-gi                                   3.56.3-2
ii  python3-pypandoc                             1.15+ds0-1
ii  python3-regex                                0.1.20250918-1+b1

apostrophe recommends no packages.

apostrophe suggests no packages.

-- no debconf information
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.