[pkg-uWSGI-devel] Bug#1133977: uwsgi breaks uwsgi-plugin-python autopkgtest on s390x: Segmentation Fault

Paul Gevers elbrus at debian.org
Thu Apr 16 07:24:52 BST 2026


Source: uwsgi, uwsgi-plugin-python
Control: found -1 uwsgi/2.0.31-4
Control: found -1 uwsgi-plugin-python/0.0.2
Severity: serious
Tags: sid forky
User: debian-ci at lists.debian.org
Usertags: breaks needs-update
X-Debbugs-CC: debian-s390 at lists.debian.org
User: debian-s390 at lists.debian.org
Usertag: s390x

Dear maintainer(s),

With a recent upload of uwsgi the autopkgtest of uwsgi-plugin-python 
fails in testing on s390x when that autopkgtest is run with the binary 
packages of uwsgi from unstable. It passes when run with only packages 
from testing. In tabular form:

                        pass            fail
uwsgi                  from testing    2.0.31-4
uwsgi-plugin-python    from testing    0.0.2
all others             from testing    from testing

I copied some of the output at the bottom of this report.

Currently this regression is blocking the migration of uwsgi to testing 
[1]. Due to the nature of this issue, I filed this bug report against 
both packages. Can you please investigate the situation and reassign the 
bug to the right package?

More information about this bug and the reason for filing it can be found on
https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation

Paul

[1] https://qa.debian.org/excuses.php?package=uwsgi

https://ci.debian.net/data/autopkgtest/testing/s390x/u/uwsgi-plugin-python/70251971/log.gz

  56s test_cgi_helloworld (__main__.UwsgiTest.test_cgi_helloworld) ... 
skipped "['cgi'] plugins not available but required for this test case"
  56s test_jvm_hellworld (__main__.UwsgiTest.test_jvm_hellworld) ... 
skipped "['jvm'] plugins not available but required for this test case"
  56s test_mountpoints (__main__.UwsgiTest.test_mountpoints) ... ERROR
  56s [uWSGI] getting INI configuration from 
/usr/src/uwsgi/t/python/manage_script_name/manage_script_name_test.ini
  56s *** Starting uWSGI 2.0.31-debian (64bit) on [Mon Apr 13 23:30:43 
2026] ***
  56s compiled with version: 15.2.0 on 09 March 2026 22:28:50
  56s os: Linux-6.12.74+deb13+1-s390x #1 SMP Debian 6.12.74-2 (2026-03-08)
  56s nodename: ci-103-5a0b77e7
  56s machine: s390x
  56s clock source: unix
  56s pcre jit disabled
  56s *** big endian arch detected ***
  56s detected number of CPU cores: 10
  56s current working directory: 
/tmp/autopkgtest-lxc.dv57h8nf/downtmp/build.3pl/src
  56s detected binary path: /usr/bin/uwsgi-core
  56s *** WARNING: you are running uWSGI without its master process 
manager ***
  56s your memory page size is 4096 bytes
  56s detected max file descriptor number: 1024
  56s lock engine: pthread robust mutexes
  56s thunder lock: disabled (you can enable it with --thunder-lock)
  56s uwsgi socket 0 bound to TCP address 127.0.0.1:8000 fd 3
  56s Python version: 3.13.12 (main, Feb  4 2026, 15:06:39) [GCC 15.2.0]
  56s Python main interpreter initialized at 0x3ff8eeac8c8
  56s python threads support enabled
  56s your server socket listen backlog is limited to 100 connections
  56s your mercy for graceful operations on workers is 60 seconds
  56s mapped 72920 bytes (71 KB) for 1 cores
  56s *** Operational MODE: single process ***
  56s WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 
0x3ff8eeac8c8 pid: 1460 (default app)
  56s mounting 
/usr/src/uwsgi/t/python/manage_script_name//useless_app.py on /foo
  56s WSGI app 1 (mountpoint='/foo') ready in 0 seconds on interpreter 
0x3ff9013e850 pid: 1460
  56s mounting 
/usr/src/uwsgi/t/python/manage_script_name//useless_app.py on /foobis/
  56s WSGI app 2 (mountpoint='/foobis/') ready in 0 seconds on 
interpreter 0x3ff900ff850 pid: 1460
  56s mounting 
/usr/src/uwsgi/t/python/manage_script_name//useless_app.py on /footris/
  56s WSGI app 3 (mountpoint='/footris/') ready in 0 seconds on 
interpreter 0x3ff900cf850 pid: 1460
  56s *** uWSGI is running in multiple interpreter mode ***
  56s spawned uWSGI worker 1 (and the only) (pid: 1460, cores: 1)
  56s [pid: 1460|app: 1|req: 1/1] 127.0.0.1 () {28 vars in 325 bytes} 
[Mon Apr 13 23:30:43 2026] GET /foo => generated 4 bytes in 0 msecs 
(HTTP/1.1 200) 1 headers in 44 bytes (1 switches on core 0)
  56s [pid: 1460|app: 1|req: 2/2] 127.0.0.1 () {28 vars in 327 bytes} 
[Mon Apr 13 23:30:43 2026] GET /foo/ => generated 4 bytes in 0 msecs 
(HTTP/1.1 200) 1 headers in 44 bytes (1 switches on core 0)
  56s [pid: 1460|app: 1|req: 3/3] 127.0.0.1 () {28 vars in 343 bytes} 
[Mon Apr 13 23:30:43 2026] GET /foo/resource => generated 4 bytes in 0 
msecs (HTTP/1.1 200) 1 headers in 44 bytes (1 switches on core 0)
  56s [pid: 1460|app: 3|req: 1/4] 127.0.0.1 () {28 vars in 335 bytes} 
[Mon Apr 13 23:30:43 2026] GET /footris/ => generated 9 bytes in 0 msecs 
(HTTP/1.1 200) 1 headers in 44 bytes (1 switches on core 0)
  56s !!! uWSGI process 1460 got Segmentation Fault !!!
  56s *** backtrace of 1460 ***
  56s /usr/bin/uwsgi(uwsgi_backtrace+0x2a) [0x2aa1d284f22]
  56s /usr/bin/uwsgi(uwsgi_segfault+0x32) [0x2aa1d285332]
  56s linux-vdso64.so.1(__kernel_sigreturn+0) [0x3ffe42fe4d8]
  56s /usr/lib/s390x-linux-gnu/libpython3.13.so.1.0(+0x22c5a8) 
[0x3ff8e92c5a8]
  56s 
/usr/lib/uwsgi/plugins/python3_plugin.so(uwsgi_request_subhandler_wsgi+0xa0) 
[0x3ff8f0191c8]
  56s /usr/lib/uwsgi/plugins/python3_plugin.so(uwsgi_request_wsgi+0x146) 
[0x3ff8f01801e]
  56s /usr/bin/uwsgi(wsgi_req_recv+0xbc) [0x2aa1d22cf84]
  56s /usr/bin/uwsgi(simple_loop_run+0xda) [0x2aa1d280272]
  56s /usr/bin/uwsgi(simple_loop+0x7e) [0x2aa1d280386]
  56s /usr/bin/uwsgi(uwsgi_ignition+0x260) [0x2aa1d285660]
  56s /usr/bin/uwsgi(uwsgi_worker_run+0x2fc) [0x2aa1d289214]
  56s /usr/bin/uwsgi(uwsgi_run+0x51c) [0x2aa1d2898a4]
  56s /usr/bin/uwsgi(_start+0) [0x2aa1d22c570]
  56s /usr/lib/s390x-linux-gnu/libc.so.6(+0x2ccba) [0x3ff8f1accba]
  56s /usr/lib/s390x-linux-gnu/libc.so.6(__libc_start_main+0xa8) 
[0x3ff8f1acdb0]
  56s /usr/bin/uwsgi(+0x2c5b0) [0x2aa1d22c5b0]
  56s *** end of backtrace ***
  56s  56s test_php_session (__main__.UwsgiTest.test_php_session) ... 
skipped "['php'] plugins not available but required for this test case"
  56s test_psgi_helloworld (__main__.UwsgiTest.test_psgi_helloworld) ... 
skipped "['psgi'] plugins not available but required for this test case"
  56s test_pypy3_helloworld (__main__.UwsgiTest.test_pypy3_helloworld) 
... skipped "['pypy3'] plugins not available but required for this test 
case"
  56s test_python3_helloworld 
(__main__.UwsgiTest.test_python3_helloworld) ... *** Starting uWSGI 
2.0.31-debian (64bit) on [Mon Apr 13 23:30:43 2026] ***
  56s compiled with version: 15.2.0 on 09 March 2026 22:28:50
  56s os: Linux-6.12.74+deb13+1-s390x #1 SMP Debian 6.12.74-2 (2026-03-08)
  56s nodename: ci-103-5a0b77e7
  56s machine: s390x
  56s clock source: unix
  56s pcre jit disabled
  56s *** big endian arch detected ***
  56s detected number of CPU cores: 10
  56s current working directory: 
/tmp/autopkgtest-lxc.dv57h8nf/downtmp/build.3pl/src
  56s detected binary path: /usr/bin/uwsgi-core
  56s *** WARNING: you are running uWSGI without its master process 
manager ***
  56s your memory page size is 4096 bytes
  56s detected max file descriptor number: 1024
  56s lock engine: pthread robust mutexes
  56s thunder lock: disabled (you can enable it with --thunder-lock)
  56s uwsgi socket 0 bound to TCP address 127.0.0.1:8000 fd 3
  56s Python version: 3.13.12 (main, Feb  4 2026, 15:06:39) [GCC 15.2.0]
  56s Python main interpreter initialized at 0x3ffa01ac8c8
  56s python threads support enabled
  56s your server socket listen backlog is limited to 100 connections
  56s your mercy for graceful operations on workers is 60 seconds
  56s mapped 72920 bytes (71 KB) for 1 cores
  56s *** Operational MODE: single process ***
  56s WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 
0x3ffa01ac8c8 pid: 1461 (default app)
  56s *** uWSGI is running in multiple interpreter mode ***
  56s spawned uWSGI worker 1 (and the only) (pid: 1461, cores: 1)
  56s [pid: 1461|app: 0|req: 1/1] 127.0.0.1 () {28 vars in 334 bytes} 
[Mon Apr 13 23:30:43 2026] GET / => generated 11 bytes in 0 msecs 
(HTTP/1.1 200) 1 headers in 44 bytes (1 switches on core 0)
  56s  56s ok
  56s test_rack_helloworld (__main__.UwsgiTest.test_rack_helloworld) ... 
skipped "['rack'] plugins not available but required for this test case"
  56s test_static_expires (__main__.UwsgiTest.test_static_expires) ... 
[uWSGI] getting INI configuration from /usr/src/uwsgi/t/static/config.ini
  56s [uwsgi-static] added mapping for /foobar => /usr/src/uwsgi/t/static/
  56s *** Starting uWSGI 2.0.31-debian (64bit) on [Mon Apr 13 23:30:43 
2026] ***
  56s compiled with version: 15.2.0 on 09 March 2026 22:28:50
  56s os: Linux-6.12.74+deb13+1-s390x #1 SMP Debian 6.12.74-2 (2026-03-08)
  56s nodename: ci-103-5a0b77e7
  56s machine: s390x
  56s clock source: unix
  56s pcre jit disabled
  56s *** big endian arch detected ***
  56s detected number of CPU cores: 10
  56s current working directory: 
/tmp/autopkgtest-lxc.dv57h8nf/downtmp/build.3pl/src
  56s detected binary path: /usr/bin/uwsgi-core
  56s *** WARNING: you are running uWSGI without its master process 
manager ***
  56s your memory page size is 4096 bytes
  56s detected max file descriptor number: 1024
  56s building mime-types dictionary from file /etc/mime.types...1573 
entry found
  56s lock engine: pthread robust mutexes
  56s thunder lock: disabled (you can enable it with --thunder-lock)
  56s uwsgi socket 0 bound to TCP address 127.0.0.1:8000 fd 3
  56s your server socket listen backlog is limited to 100 connections
  56s your mercy for graceful operations on workers is 60 seconds
  56s mapped 72920 bytes (71 KB) for 1 cores
  56s *** Operational MODE: single process ***
  56s *** no app loaded. going in full dynamic mode ***
  56s *** uWSGI is running in multiple interpreter mode ***
  56s spawned uWSGI worker 1 (and the only) (pid: 1462, cores: 1)
  56s  56s ok
  56s  56s 
======================================================================
  56s ERROR: test_mountpoints (__main__.UwsgiTest.test_mountpoints)
  56s ----------------------------------------------------------------------
  56s Traceback (most recent call last):
  56s   File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", 
line 787, in urlopen
  56s     response = self._make_request(
  56s         conn,
  56s     ...<10 lines>...
  56s         **response_kw,
  56s     )
  56s   File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", 
line 534, in _make_request
  56s     response = conn.getresponse()
  56s   File "/usr/lib/python3/dist-packages/urllib3/connection.py", 
line 571, in getresponse
  56s     httplib_response = super().getresponse()
  56s   File "/usr/lib/python3.13/http/client.py", line 1450, in getresponse
  56s     response.begin()
  56s     ~~~~~~~~~~~~~~^^
  56s   File "/usr/lib/python3.13/http/client.py", line 336, in begin
  56s     version, status, reason = self._read_status()
  56s                               ~~~~~~~~~~~~~~~~~^^
  56s   File "/usr/lib/python3.13/http/client.py", line 305, in _read_status
  56s     raise RemoteDisconnected("Remote end closed connection without"
  56s                              " response")
  56s http.client.RemoteDisconnected: Remote end closed connection 
without response
  56s  56s During handling of the above exception, another exception 
occurred:
  56s  56s Traceback (most recent call last):
  56s   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 
644, in send
  56s     resp = conn.urlopen(
  56s         method=request.method,
  56s     ...<9 lines>...
  56s         chunked=chunked,
  56s     )
  56s   File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", 
line 841, in urlopen
  56s     retries = retries.increment(
  56s         method, url, error=new_e, _pool=self, 
_stacktrace=sys.exc_info()[2]
  56s     )
  56s   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", 
line 490, in increment
  56s     raise reraise(type(error), error, _stacktrace)
  56s           ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  56s   File "/usr/lib/python3/dist-packages/urllib3/util/util.py", line 
38, in reraise
  56s     raise value.with_traceback(tb)
  56s   File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", 
line 787, in urlopen
  56s     response = self._make_request(
  56s         conn,
  56s     ...<10 lines>...
  56s         **response_kw,
  56s     )
  56s   File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", 
line 534, in _make_request
  56s     response = conn.getresponse()
  56s   File "/usr/lib/python3/dist-packages/urllib3/connection.py", 
line 571, in getresponse
  56s     httplib_response = super().getresponse()
  56s   File "/usr/lib/python3.13/http/client.py", line 1450, in getresponse
  56s     response.begin()
  56s     ~~~~~~~~~~~~~~^^
  56s   File "/usr/lib/python3.13/http/client.py", line 336, in begin
  56s     version, status, reason = self._read_status()
  56s                               ~~~~~~~~~~~~~~~~~^^
  56s   File "/usr/lib/python3.13/http/client.py", line 305, in _read_status
  56s     raise RemoteDisconnected("Remote end closed connection without"
  56s                              " response")
  56s urllib3.exceptions.ProtocolError: ('Connection aborted.', 
RemoteDisconnected('Remote end closed connection without response'))
  56s  56s During handling of the above exception, another exception 
occurred:
  56s  56s Traceback (most recent call last):
  56s   File "/usr/src/uwsgi/t/runner", line 134, in test_mountpoints
  56s     self.assert_GET_body(f"{mp}/" if not ends else f"{mp}"[:-1], mp)
  56s     ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  56s   File "/usr/src/uwsgi/t/runner", line 95, in assert_GET_body
  56s     with requests.get(f"http://{UWSGI_HTTP}{url_path}") as r:
  56s          ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  56s   File "/usr/lib/python3/dist-packages/requests/api.py", line 73, 
in get
  56s     return request("get", url, params=params, **kwargs)
  56s   File "/usr/lib/python3/dist-packages/requests/api.py", line 59, 
in request
  56s     return session.request(method=method, url=url, **kwargs)
  56s            ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  56s   File "/usr/lib/python3/dist-packages/requests/sessions.py", line 
589, in request
  56s     resp = self.send(prep, **send_kwargs)
  56s   File "/usr/lib/python3/dist-packages/requests/sessions.py", line 
703, in send
  56s     r = adapter.send(request, **kwargs)
  56s   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 
659, in send
  56s     raise ConnectionError(err, request=request)
  56s requests.exceptions.ConnectionError: ('Connection aborted.', 
RemoteDisconnected('Remote end closed connection without response'))
  56s  56s 
----------------------------------------------------------------------
  56s Ran 9 tests in 0.329s
  56s  56s FAILED (errors=1, skipped=6)
  57s autopkgtest [23:30:44]: test integration

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 585 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-uwsgi-devel/attachments/20260416/1e5db1e7/attachment.sig>


More information about the pkg-uWSGI-devel mailing list