NGINX Main process exited, code=killed, status=11/SEGV on Ubuntu 20.04.x LTS

During setting up a virtual host with Ubutnu 20.04.5 LTS for a customer for Nextcloud, Only Office and Zammad I came across the following problem:

After installing nginx-extras (nginx-extras is required by only office) with PHP-8.1. on Ubtuntu 20.04.5 LTS the nginx server always crashed after a certain time, without any comprehensible reason. After a more detailed analysis I found out that the main process exited more or less exactly after 24 hours (sometimes 48 hours) after systemd reloaded nginx:

systemd[1]: Reloading A high performance web server and a reverse proxy server.
systemd[1]: Reloaded A high performance web server and a reverse proxy server.
systemd[1]: nginx.service: Main process exited, code=killed, status=11/SEGV 
systemd[1]: nginx.service: Killing process 462641 (nginx) with signal SIGKILL.
systemd[1]: nginx.service: Killing process 462641 (nginx) with signal SIGKILL.
systemd[1]: nginx.service: Failed with result 'signal'.

nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: failed (Result: signal) since Mon 2022-09-12 02:24:57 CEST; 6h ago
       Docs: man:nginx(8)
    Process: 700608 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 700609 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 815231 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS)
   Main PID: 700610 (code=killed, signal=SEGV)
      Tasks: 0 (limit: 1843)
     Memory: 8.2M
     CGroup: /system.slice/nginx.service

After some research I found out that when installing nginx-extras the perl module who allows to execute perl scripts directly in nginx is also installed. However there is a bug in perl shipped with Ubuntu 20.04.x LTS which results in a nginx crash after nginx is reloaded after three or four times.

To solve this bug I decided to unlink the mod-http-perl module and restart nginx using the following command:

unlink /etc/nginx/modules-enabled/50-mod-http-perl.conf
sudo systemctl restart nginx

Since that nginx is running completely fine. I do not need to execute perl directly in nginx, therefore there are no side effects I have to consider.

Links:

Leave a Reply

Your email address will not be published. Required fields are marked *