Apostrophe が起動しない不具合
Apostrophe が起動しない不具合が報告されています。Apostrophe
Apostrophe は GNOME 環境向けのマークダウンエディターです。起動しない
この現象は Ubuntu 26.04 LTS + Python 3.14 + Apostrophe 3.4-2 環境で発生しています。Apostrophe をアプリケーションランチャーから起動しても端末から起動しても、Apostrophe のウィンドウが表示されません。
また端末から Apostrophe を起動すると、以下のエラーが出力されます。
(apostrophe:22283): Adwaita-WARNING **: 08:14:09.652: The resource style-hc.css is deprecated and shouldn't be used anymore. Use style.css with media queries instead.
Traceback (most recent call last):
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/process.py", line 121, in start
self._popen = self._Popen(self)
~~~~~~~~~~~^^^^^^
File "/usr/lib/python3.14/multiprocessing/context.py", line 230, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/usr/lib/python3.14/multiprocessing/context.py", line 306, in _Popen
return Popen(process_obj)
File "/usr/lib/python3.14/multiprocessing/popen_forkserver.py", line 35, in __init__
super().__init__(process_obj)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/usr/lib/python3.14/multiprocessing/popen_fork.py", line 20, in __init__
self._launch(process_obj)
~~~~~~~~~~~~^^^^^^^^^^^^^
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
when serializing apostrophe.text_view_markup_handler.MarkupHandler object
when serializing tuple item 0
when serializing method reconstructor arguments
when serializing method object
when serializing dict item '_target'
when serializing multiprocessing.context.Process state
when serializing multiprocessing.context.Process object
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apostrophe/application.py", line 144, in do_activate
self._set_color_scheme()
~~~~~~~~~~~~~~~~~~~~~~^^
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'
Traceback (most recent call last):
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/process.py", line 121, in start
self._popen = self._Popen(self)
~~~~~~~~~~~^^^^^^
File "/usr/lib/python3.14/multiprocessing/context.py", line 230, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/usr/lib/python3.14/multiprocessing/context.py", line 306, in _Popen
return Popen(process_obj)
File "/usr/lib/python3.14/multiprocessing/popen_forkserver.py", line 35, in __init__
super().__init__(process_obj)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/usr/lib/python3.14/multiprocessing/popen_fork.py", line 20, in __init__
self._launch(process_obj)
~~~~~~~~~~~~^^^^^^^^^^^^^
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
when serializing apostrophe.text_view_markup_handler.MarkupHandler object
when serializing tuple item 0
when serializing method reconstructor arguments
when serializing method object
when serializing dict item '_target'
when serializing multiprocessing.context.Process state
when serializing multiprocessing.context.Process object
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apostrophe/application.py", line 144, in do_activate
self._set_color_scheme()
~~~~~~~~~~~~~~~~~~~~~~^^
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'
Python 周りでエラーが起きていますね。
Python の仕様変更の影響か
Python 3.14 で POSIX 環境における multiprocessing のデフォルトのプロセス開始方式が fork から forkserver に変更されました。これに起因するエラーであると見られています。
回避策
本現象を回避するための回避策が提案されています。この回避策は sitecustomize.py で fork を指定する方法です。
mkdir -p ~/.local/share/apostrophe-python314-fix
cat > ~/.local/share/apostrophe-python314-fix/sitecustomize.py <<'PY'
import multiprocessing as mp
try:
mp.set_start_method("fork")
except RuntimeError:
pass
PY
PYTHONPATH="$HOME/.local/share/apostrophe-python314-fix${PYTHONPATH:+:$PYTHONPATH}" apostrophe
修正パッチ
Apostrophe に fork を指定する修正パッチも提案されています。以下のコマンドで上記のパッチを適用できます。
sudo patch /usr/bin/apostrophe apostrophe.patch

