[Bug 6846] New: hg serve with lsprof enabled throws exceptions on cpython 3.12
mercurial-bugs at mercurial-scm.org
mercurial-bugs at mercurial-scm.org
Wed Oct 11 16:58:48 UTC 2023
https://bz.mercurial-scm.org/show_bug.cgi?id=6846
Bug ID: 6846
Summary: hg serve with lsprof enabled throws exceptions on
cpython 3.12
Product: Mercurial
Version: stable branch
Hardware: PC
OS: Linux
Status: UNCONFIRMED
Severity: bug
Priority: wish
Component: hgweb
Assignee: bugzilla at mercurial-scm.org
Reporter: coral.pink at disr.it
CC: mercurial-devel at mercurial-scm.org
Python Version: ---
Due to changes in python 3.12 in _lsprof module
(https://github.com/python/cpython/issues/103533) multiple profiling contexts
no longer work - at least that's what I think.
The first profiler starts in mercurial.dispatch on start up, and the second one
fails to start in mercurial.hgweb on WSGI request, which crashes request
handling. Removing profiling contexts in mercurial.hgweb makes error go away.
This also causes test-profile.t to fail.
To reproduce:
> hg init
> hg serve --profile --config profiling.type=ls &
listening at http://127.0.0.1:8000/ (bound to *:8000)
> hg clone 'http://127.0.0.1:8000'
127.0.0.1 - - [11/Oct/2023 18:37:08] Exception happened during processing
request '/?cmd=capabilities':
Traceback (most recent call last):
File "/usr/lib/python3.12/site-packages/mercurial/hgweb/server.py", line 123,
in do_POST
self.do_write()
File "/usr/lib/python3.12/site-packages/mercurial/hgweb/server.py", line 117,
in do_write
self.do_hgweb()
File "/usr/lib/python3.12/site-packages/mercurial/hgweb/server.py", line 232,
in do_hgweb
for chunk in self.server.application(env, self._start_response):
File "/usr/lib/python3.12/site-packages/mercurial/hgweb/hgweb_mod.py", line
364, in run_wsgi
with profiling.profile(repo.ui, enabled=profile):
File "/usr/lib/python3.12/site-packages/mercurial/profiling.py", line 197, in
__enter__
self.start()
File "/usr/lib/python3.12/site-packages/mercurial/profiling.py", line 262, in
start
self._profiler.__enter__()
File "/usr/lib/python3.12/contextlib.py", line 137, in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/mercurial/profiling.py", line 58, in
lsprofile
p.enable(subcalls=True)
ValueError: Another profiling tool is already active
127.0.0.1 - - [11/Oct/2023 18:37:08] "GET /?cmd=capabilities HTTP/1.1" 500 -
abort: HTTP Error 500: Internal Server Error
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the Mercurial-devel
mailing list