[Bug 2156932] Fix merged to nova (stable/2026.1)
OpenStack Infra
2156932 at bugs.launchpad.net
Tue Aug 18 17:43:18 UTC 2026
Reviewed: https://review.opendev.org/c/openstack/nova/+/999667
Committed: https://opendev.org/openstack/nova/commit/d9b413f116588a2d799be73a2e0dbadc68910a68
Submitter: "Zuul (22348)"
Branch: stable/2026.1
commit d9b413f116588a2d799be73a2e0dbadc68910a68
Author: Kamil Sambor <kamil.sambor at gmail.com>
Date: Fri May 8 10:23:40 2026 +0200
Restore 'fork' start method for daemon mode on Python 3.14
Closes-Bug: #2156932
Change-Id: I8a2dabf85a4d8bb1cf1f48f9bde891add394b73d
Signed-off-by: Kamil Sambor <kamil.sambor at gmail.com>
(cherry picked from commit 3356917d0ce88baf65c9ce332dc40c202240ea79)
--
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to nova in Ubuntu.
https://bugs.launchpad.net/bugs/2156932
Title:
Spice console empty page due to PicklingError
Status in OpenStack Compute (nova):
Fix Committed
Status in nova package in Ubuntu:
In Progress
Status in nova source package in Resolute:
In Progress
Status in nova source package in Stonking:
In Progress
Bug description:
[Impact]
Since Python 3.14 changed Linux’s default multiprocessing start method
from fork to forkserver, websockify must pickle the proxy target and
its arguments when handling Nova’s noVNC, SPICE HTML5, and serial
console connections.
The proxy state contains objects that cannot be pickled, so the child
process fails before handling the connection; the patch restores the
previous fork method.
[Test Plan]
Before the patch:
python3.14 /usr/bin/nova-novncproxy --nodaemon --web /tmp --vnc-
novncproxy_host 127.0.0.1 --vnc-novncproxy_port 18080
# curl to above proxy
curl -i --max-time 5 http://127.0.0.1:18080/
# result
handler exception: Can't pickle <enum 'AddressFamily'>: it's not the same object as socket.AddressFamily
curl: (56) Recv failure: Connection reset by peer
After the patch:
python3.14 /usr/bin/nova-novncproxy --nodaemon --web /tmp --vnc-
novncproxy_host 127.0.0.1 --vnc-novncproxy_port 18080
curl -i --max-time 5 http://127.0.0.1:18080/
# result
HTTP/1.1 404 Not Found
[Where problems could occur]
The modified code runs when Nova starts a noVNC, SPICE, or serial
console proxy and forces Python 3.14 to use fork; a problem could
prevent the proxy from starting or handling console connections.
[Original Description]
[ Impact ]
Ubuntu 26.04 / OpenStack Gazpacho; Spice console shows nothing
(Firefox gets an empty page from the server).
[ Other Information ]
Reproducer:
Deploy horizon on Ubuntu 26.04 via regress-stack [1] and attempt to
use the spice console.
In `/var/log/nova/nova-spiceproxy.log`:
```
2026-06-16 15:21:17.063 96989 DEBUG nova.console.websocketproxy [-] 10.0.0.103: new handler Process vmsg /usr/lib/python3/dist-packages/websockify/websockifyserver.py:632
2026-06-16 15:21:17.065 96989 INFO nova.console.websocketproxy [-] handler exception: Can't pickle <enum 'AddressFamily'>: it's not the same object as socket.AddressFamily
2026-06-16 15:21:17.065 96989 DEBUG nova.console.websocketproxy [-] exception vmsg /usr/lib/python3/dist-packages/websockify/websockifyserver.py:632
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy Traceback (most recent call last):
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy File "/usr/lib/python3/dist-packages/websockify/websockifyserver.py", line 839, in start_server
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy p.start()
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy ~~~~~~~^^
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy File "/usr/lib/python3.14/multiprocessing/process.py", line 121, in start
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy self._popen = self._Popen(self)
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy ~~~~~~~~~~~^^^^^^
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy File "/usr/lib/python3.14/multiprocessing/context.py", line 230, in _Popen
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy return _default_context.get_context().Process._Popen(process_obj)
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy File "/usr/lib/python3.14/multiprocessing/context.py", line 294, in _Popen
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy return Popen(process_obj)
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy File "/usr/lib/python3.14/multiprocessing/popen_spawn_posix.py", line 32, in __init__
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy super().__init__(process_obj)
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy File "/usr/lib/python3.14/multiprocessing/popen_fork.py", line 20, in __init__
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy self._launch(process_obj)
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy ~~~~~~~~~~~~^^^^^^^^^^^^^
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy File "/usr/lib/python3.14/multiprocessing/popen_spawn_posix.py", line 47, in _launch
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy reduction.dump(process_obj, fp)
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy File "/usr/lib/python3.14/multiprocessing/reduction.py", line 60, in dump
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy ForkingPickler(file, protocol).dump(obj)
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy _pickle.PicklingError: Can't pickle <enum 'AddressFamily'>: it's not the same object as socket.AddressFamily
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy when serializing socket.AddressFamily reconstructor
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy when serializing socket.AddressFamily object
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy when serializing tuple item 1
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy when serializing eventlet.greenio.base.GreenSocket reconstructor arguments
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy when serializing eventlet.greenio.base.GreenSocket object
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy when serializing tuple item 0
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy when serializing dict item '_args'
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy when serializing multiprocessing.context.Process state
2026-06-16 15:21:17.065 96989 ERROR nova.console.websocketproxy when serializing multiprocessing.context.Process object
```
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/2156932/+subscriptions
More information about the Ubuntu-openstack-bugs
mailing list