** Description changed:

  [ Impact ]
  
-  * An explanation of the effects of the bug on users and justification
-    for backporting the fix to the stable release.
+ This bug was found when trying to use Trac 1.6.
  
-  * In addition, it is helpful, but not required, to include an
-    explanation of how the upload fixes this bug.
+ The trac.web.modpython_frontend handler supplied by Trac indirectly ends
+ up in platform._sys_version which requires sys.version to be of a
+ specific format: "X.Y.Z (buildno, builddate, buildtime) [compiler]", and
+ raises ValueError if it cannot be parsed.
+ 
+ The error that appears in the Apache log is:
+ 
+ ...
+ File "/usr/lib/python3.12/platform.py", line 1108, in _sys_version ...
+ ValueError: failed to parse CPython sys.version: '3.12.3'
+ 
+ Troubleshooting indicated that this is a problem with mod_python. An
+ upstream issue was filed[1], and quickly fixed[2].
+ 
+ A reproducer for this bug that does not involve trac was kindly provided
+ by @mdsquire and is being used in the test plan, instead of installing
+ and configuring trac.
+ 
+ 
+ 1. https://github.com/grisha/mod_python/issues/138
+ 2. 
https://github.com/grisha/mod_python/commit/51f359d1252865181247e5182294ae5a28e3116d
+ 
  
  [ Test Plan ]
  
  # Create an ubuntu noble container or VM, and perform these steps in it:
  
  sudo apt install apache2 libapache2-mod-python lynx -y
  
  wget https://bugs.launchpad.net/ubuntu/+source/libapache2-mod-
  python/+bug/2078527/+attachment/5813129/+files/python_bug_2078527.tar.gz
  
  sudo mkdir -p /opt/local/tmp
  
  sudo tar -C /opt/local/tmp/ -xf python_bug_2078527.tar.gz
  
  echo "Include /opt/local/tmp/python_bug_2078527/apache2.conf" | sudo tee
  -a /etc/apache2/apache2.conf
  
  sudo a2enmod python
  
  sudo systemctl restart apache2
  
  lynx -dump http://127.0.0.1/mod-python-bug-2078527
  
  # When reproducing the error, the output will contain a ValueError:
  
-    Python sys.version 3.12.3
-    platform.python_version() ValueError: failed to parse CPython
-    sys.version: '3.12.3'
+    Python sys.version 3.12.3
+    platform.python_version() ValueError: failed to parse CPython
+    sys.version: '3.12.3'
  
  # With the fix, the output is:
  
-    Python sys.version        3.12.3 (main, Jun 18 2025, 17:59:45) [GCC 13.3.0]
-    platform.python_version() 3.12.3
- 
+    Python sys.version        3.12.3 (main, Jun 18 2025, 17:59:45) [GCC 13.3.0]
+    platform.python_version() 3.12.3
  
  [ Where problems could occur ]
  
   * Think about what the upload changes in the software. Imagine the
     change is wrong or breaks something else: how would this show up?
  
   * It is assumed that any SRU candidate patch is well-tested before
     upload and has a low overall risk of regression, but it's important
     to make the effort to think about what ''could'' happen in the event
     of a regression.
  
   * This must never be "None" or "Low", or entirely an argument as to why
     your upload is low risk.
  
   * This both shows the SRU team that the risks have been considered,
     and provides guidance to testers in regression-testing the SRU.
  
  [ Other Info ]
  
   * Anything else you think is useful to include
  
   * Make sure to explain any deviation from the norm, to save the SRU
     reviewer from having to infer your reasoning, possibly incorrectly.
     This should also help reduce review iterations, particularly when the
     reason for the deviation is not obvious.
  
   * Anticipate questions from users, SRU, +1 maintenance, security teams
     and the Technical Board and address these questions in advance
  
  [ Original Description ]
  
  Ubuntu version: 24.04.1
  Package version: 3.5.0.1-3build1
  Python version: 3.12.3
  
  I encountered this problem after upgrading from jammy -> nobel and
  installing Trac 1.6. I do not believe this is a problem with Trac
  however.
  
  The trac.web.modpython_frontend handler supplied by Trac indirectly ends
  up in platform._sys_version which requires sys.version to be of a
  specific format: "X.Y.Z (buildno, builddate, buildtime) [compiler]", and
  raises ValueError if it cannot be parsed.
  
  However, setting the handler to mod_python.testhandler reveals that
  sys.version is just "X.Y.X".
  
  So the sys.version that is being set by mod_python is not compatible
  with the standard python platform module.
  
  The error that appears in the Apache log is:
  
  ...
  File "/usr/lib/python3.12/platform.py", line 1108, in _sys_version ...
  ValueError: failed to parse CPython sys.version: '3.12.3'
  
  Adding this hack to the trac.web.modpython_frontend module resolves the
  problem:
  
  try:
      sys.version.index(" ")
  except ValueError:
      sys.version += ' (dummy, dummy, dummy) [dummy]'

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2078527

Title:
  sys.version from mod_python cannot be parsed by the python platform
  module

To manage notifications about this bug go to:
https://bugs.launchpad.net/mod-python/+bug/2078527/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to