Closed tgz-cz closed 3 months ago
Sorry. I failed to spot my mistake, believing the added test case would tell me. It will
Hi I just had it too in my service running gunicorn,
May 17 03:47:19 YeheskelServer gunicorn[2283854]: [2024-05-17 03:47:19 +0300] [2283854] [ERROR] Exception in worker process
May 17 03:47:19 YeheskelServer gunicorn[2283854]: Traceback (most recent call last):
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 134, in handle
May 17 03:47:19 YeheskelServer gunicorn[2283854]: req = next(parser)
May 17 03:47:19 YeheskelServer gunicorn[2283854]: ^^^^^^^^^^^^
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/http/parser.py", line 42, in __next__
May 17 03:47:19 YeheskelServer gunicorn[2283854]: self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
May 17 03:47:19 YeheskelServer gunicorn[2283854]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/http/message.py", line 257, in __init__
May 17 03:47:19 YeheskelServer gunicorn[2283854]: super().__init__(cfg, unreader, peer_addr)
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/http/message.py", line 60, in __init__
May 17 03:47:19 YeheskelServer gunicorn[2283854]: unused = self.parse(self.unreader)
May 17 03:47:19 YeheskelServer gunicorn[2283854]: ^^^^^^^^^^^^^^^^^^^^^^^^^
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/http/message.py", line 281, in parse
May 17 03:47:19 YeheskelServer gunicorn[2283854]: self.parse_request_line(line)
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/http/message.py", line 445, in parse_request_line
May 17 03:47:19 YeheskelServer gunicorn[2283854]: raise InvalidHTTPVersion(self.version)
May 17 03:47:19 YeheskelServer gunicorn[2283854]: gunicorn.http.errors.InvalidHTTPVersion: <exception str() failed>
May 17 03:47:19 YeheskelServer gunicorn[2283854]: During handling of the above exception, another exception occurred:
May 17 03:47:19 YeheskelServer gunicorn[2283854]: Traceback (most recent call last):
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/arbiter.py", line 609, in spawn_worker
May 17 03:47:19 YeheskelServer gunicorn[2283854]: worker.init_process()
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/workers/base.py", line 142, in init_process
May 17 03:47:19 YeheskelServer gunicorn[2283854]: self.run()
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 126, in run
May 17 03:47:19 YeheskelServer gunicorn[2283854]: self.run_for_one(timeout)
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 70, in run_for_one
May 17 03:47:19 YeheskelServer gunicorn[2283854]: self.accept(listener)
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 32, in accept
May 17 03:47:19 YeheskelServer gunicorn[2283854]: self.handle(listener, client, addr)
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 158, in handle
May 17 03:47:19 YeheskelServer gunicorn[2283854]: self.handle_error(req, client, addr, e)
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/workers/base.py", line 225, in handle_error
May 17 03:47:19 YeheskelServer gunicorn[2283854]: mesg = "Invalid HTTP Version '%s'" % str(exc)
May 17 03:47:19 YeheskelServer gunicorn[2283854]: ^^^^^^^^
May 17 03:47:19 YeheskelServer gunicorn[2283854]: File "/home/env-betim/lib/python3.12/site-packages/gunicorn/http/errors.py", line 56, in __str__
May 17 03:47:19 YeheskelServer gunicorn[2283854]: return "Invalid HTTP Version: %r" % self.version
May 17 03:47:19 YeheskelServer gunicorn[2283854]: ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
May 17 03:47:19 YeheskelServer gunicorn[2283854]: TypeError: not all arguments converted during string formatting
May 17 03:47:19 YeheskelServer gunicorn[2283854]: [2024-05-17 03:47:19 +0300] [2283854] [INFO] Worker exiting (pid: 2283854)
Is the solution you suggested should fix it from happening?
Edit-Yeah seems it's should sorry for spamming ;-D
Hello,
Our production log contains follwing error:
Is is probably caused by some malicious http request.
There should be probably:
instead of:
in https://github.com/benoitc/gunicorn/blob/master/gunicorn/http/errors.py#L56 (gunicorn.http.errors line 56)