
Я использую uWSGI на Ubuntu 18 (18.04.5 LTS). Совсем недавно это перестало работать - при запуске я получал эту ошибку:
Fatal Python error: Cannot recover from MemoryErrors while normalizing exceptions.
Ничего не изменилось с моей стороны, но сервер был настроен на автоматическое обновление. Запуск uwsgi от имени root сработал, но от имени www-data (как я обычно его запускаю) не удался.
После нескольких проб и ошибок выяснилось, что --never-swap
причиной была эта опция. Когда я ее удалил, все снова заработало.
Так что я могу жить с удалением --never-swap
, но мне бы хотелось узнать, почему это произошло. Это какая-то новая функция безопасности, которая не позволяет пользователям без прав root блокировать страницы памяти — в документе говорится, что эта опция делает именно это —документация uWSGI здесь.
решение1
Непривилегированному процессу нужна возможность CAP_IPC_LOCK для блокировки страниц памяти. Скорее всего, кто-то (вы или другой администратор) установил эту возможность вручную, а затем она, конечно, исчезла, когда было установлено последнее обновление.