5067: mod_wsgi Failed to exec

ict_beo

What version are you running?

  • Reviewboard lastest
  • Python 3.13

What's the URL of the page containing the problem?

https://reviewboard.trekwerk.com

What steps will reproduce the problem?

  1. I've tested wsgi and it works
  2. Could it be the Python version?
  3. I've put the error log output on pastebin, https://pastebin.com/k2vTSDhH

What is the expected output? What do you see instead?

  • A working website.
  • I see only a page in plain text with HTTP 500 - Review Board is taking a nap

What operating system are you using? What browser?

  • Site running on a Debian 13
  • Laptop on Windows 11
  • Browser is Brave

Please provide any additional information below.

ict_beo
#1 ict_beo

Correction:
- Python version 3.13.5

ict_beo
#2 ict_beo

I've run a basic python script in the revieboard venv that uses import and that runs okay.

So it looks like python is working normally in the reviewboard venv

ict_beo
#3 ict_beo

Running this command:
/var/www/reviewboard/venv/bin/python -c "from reviewboard.wsgi import application; print('Success')"

Resulted in this error:
Traceback (most recent call last):

File "<string>", line 1, in <module>

from reviewboard.wsgi import application; print('Success')

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/var/www/reviewboard/venv/lib/python3.13/site-packages/reviewboard/wsgi.py", line 21, in <module>

raise RuntimeError(

...<2 lines>...

)

RuntimeError: The REVIEWBOARD_SITEDIR environment variable must be set to the Review Board site directory.

Setting this export REVIEWBOARD_SITEDIR='/var/www/reviewboard' results in a Success.

So for now I've added the following line in my apache config:
SetEnv REVIEWBOARD_SITEDIR /var/www/reviewboard

After restarting the apache server it first looked good, so I made a backup of the log to have a clean one, but the same fault.

After running the command /var/www/reviewboard/venv/bin/python -c "from reviewboard.wsgi import application; print('Success')" in de Reviewboard venv again the error log changed somewhat

Now it ends with:
RuntimeError: populate() isn't reentrant

ict_beo
#4 ict_beo

Here is the full error log:
[Mon Apr 13 12:16:44.614792 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] mod_wsgi (pid=19522): Failed to exec Python script file '/var/www/reviewboard/htdocs/reviewboard.wsgi'.
[Mon Apr 13 12:16:44.614950 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] mod_wsgi (pid=19522): Exception occurred processing WSGI script '/var/www/reviewboard/htdocs/reviewboard.wsgi'.
[Mon Apr 13 12:16:44.615745 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] Traceback (most recent call last):
[Mon Apr 13 12:16:44.617244 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] File "/var/www/reviewboard/htdocs/reviewboard.wsgi", line 17, in <module>
[Mon Apr 13 12:16:44.617271 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] from reviewboard.wsgi import application
[Mon Apr 13 12:16:44.617294 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] File "/var/www/reviewboard/venv/lib/python3.13/site-packages/reviewboard/wsgi.py", line 93, in <module>
[Mon Apr 13 12:16:44.617305 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] application = get_wsgi_application()
[Mon Apr 13 12:16:44.617324 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] File "/opt/reviewboard/lib/python3.13/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
[Mon Apr 13 12:16:44.617334 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] django.setup(set_prefix=False)
[Mon Apr 13 12:16:44.617343 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
[Mon Apr 13 12:16:44.617360 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] File "/opt/reviewboard/lib/python3.13/site-packages/django/init.py", line 24, in setup
[Mon Apr 13 12:16:44.617387 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] apps.populate(settings.INSTALLED_APPS)
[Mon Apr 13 12:16:44.617394 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
[Mon Apr 13 12:16:44.617409 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] File "/opt/reviewboard/lib/python3.13/site-packages/django/apps/registry.py", line 83, in populate
[Mon Apr 13 12:16:44.617417 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] raise RuntimeError("populate() isn't reentrant")
[Mon Apr 13 12:16:44.617457 2026] [wsgi:error] [pid 19522:tid 19534] [client 192.168.15.6:49394] RuntimeError: populate() isn't reentrant

ict_beo
#5 ict_beo

Tried to fix it within the script, but then it want's to pull files from /opt and /usr

[Mon Apr 13 12:14:26.632643 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] mod_wsgi (pid=19522): Failed to exec Python script file '/var/www/reviewboard/htdocs/reviewboard.wsgi'.
[Mon Apr 13 12:14:26.632706 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] mod_wsgi (pid=19522): Exception occurred processing WSGI script '/var/www/reviewboard/htdocs/reviewboard.wsgi'.
[Mon Apr 13 12:14:26.634361 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] Traceback (most recent call last):
[Mon Apr 13 12:14:26.635684 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/var/www/reviewboard/htdocs/reviewboard.wsgi", line 17, in <module>
[Mon Apr 13 12:14:26.635699 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] from reviewboard.wsgi import application
[Mon Apr 13 12:14:26.635708 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/var/www/reviewboard/venv/lib/python3.13/site-packages/reviewboard/wsgi.py", line 93, in <module>
[Mon Apr 13 12:14:26.635711 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] application = get_wsgi_application()
[Mon Apr 13 12:14:26.635717 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/opt/reviewboard/lib/python3.13/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
[Mon Apr 13 12:14:26.635720 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] django.setup(set_prefix=False)
[Mon Apr 13 12:14:26.635722 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
[Mon Apr 13 12:14:26.635727 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/opt/reviewboard/lib/python3.13/site-packages/django/init.py", line 24, in setup
[Mon Apr 13 12:14:26.635730 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] apps.populate(settings.INSTALLED_APPS)
[Mon Apr 13 12:14:26.635732 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
[Mon Apr 13 12:14:26.635737 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/opt/reviewboard/lib/python3.13/site-packages/django/apps/registry.py", line 116, in populate
[Mon Apr 13 12:14:26.635740 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] app_config.import_models()
[Mon Apr 13 12:14:26.635742 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] ~~~~~~~~~~~~~~~~~~~~~~~~^^
[Mon Apr 13 12:14:26.635747 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/opt/reviewboard/lib/python3.13/site-packages/django/apps/config.py", line 269, in import_models
[Mon Apr 13 12:14:26.635749 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] self.models_module = import_module(models_module_name)
[Mon Apr 13 12:14:26.635752 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
[Mon Apr 13 12:14:26.635756 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/usr/lib/python3.13/importlib/init.py", line 88, in import_module
[Mon Apr 13 12:14:26.635759 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] return _bootstrap._gcd_import(name[level:], package, level)
[Mon Apr 13 12:14:26.635761 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[Mon Apr 13 12:14:26.635766 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/opt/reviewboard/lib/python3.13/site-packages/djblets/siteconfig/models.py", line 11, in <module>
[Mon Apr 13 12:14:26.635769 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] from djblets.cache.synchronizer import GenerationSynchronizer
[Mon Apr 13 12:14:26.635774 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/opt/reviewboard/lib/python3.13/site-packages/djblets/cache/synchronizer.py", line 13, in <module>
[Mon Apr 13 12:14:26.635788 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] from djblets.cache.backend import make_cache_key
[Mon Apr 13 12:14:26.635794 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/opt/reviewboard/lib/python3.13/site-packages/djblets/cache/backend.py", line 28, in <module>
[Mon Apr 13 12:14:26.635796 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] from djblets.secrets.crypto import (aes_decrypt,
[Mon Apr 13 12:14:26.635798 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] ...<3 lines>...
[Mon Apr 13 12:14:26.635801 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] get_default_aes_encryption_key)
[Mon Apr 13 12:14:26.635805 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/opt/reviewboard/lib/python3.13/site-packages/djblets/secrets/crypto.py", line 12, in <module>
[Mon Apr 13 12:14:26.635808 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
[Mon Apr 13 12:14:26.635814 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/opt/reviewboard/lib/python3.13/site-packages/cryptography/hazmat/primitives/ciphers/init.py", line 11, in <module>
[Mon Apr 13 12:14:26.635816 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] from cryptography.hazmat.primitives.ciphers.base import (
[Mon Apr 13 12:14:26.635818 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] ...<5 lines>...
[Mon Apr 13 12:14:26.635821 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] )
[Mon Apr 13 12:14:26.635825 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] File "/opt/reviewboard/lib/python3.13/site-packages/cryptography/hazmat/primitives/ciphers/base.py", line 10, in <module>
[Mon Apr 13 12:14:26.635828 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] from cryptography.hazmat.bindings._rust import openssl as rust_openssl
[Mon Apr 13 12:14:26.635843 2026] [wsgi:error] [pid 19522:tid 19524] [client 192.168.15.6:51334] ModuleNotFoundError: No module named '_cffi_backend'