Вопрос или проблема
Я потратил 2 дня, пытаясь выяснить, почему chromium и chrome-linux не запускаются на моем сервере из командной строки.
Я также пробовал несколько версий обоих программ, множество комбинаций различных флагов (--no-zygote
и т.д.). Не обнаружено отсутствующих библиотек (ldd chrome | grep not
ничего не возвращает). Он работает только в том случае, если я запускаю его как root
, как показано ниже:
/home/my-user-folder/chrome-linux/chrome --headless --no-sandbox --disable-gpu --print-to-pdf=/home/my-user-folder/output.pdf https://www.google.com 2>&1 | tee chrome-error.log
В результате я получаю PDF-файл с содержимым google.com, что приемлемо, но если я запускаю ту же команду не от имени root, я получаю следующее:
[FATAL:partition_address_space.cc(77)] Проверка не удалась: false.
#00 0x55b268094c82 (/home/my-user-folder/chrome-linux/chrome+0x924cc82)
#01 0x55b26809b443 (/home/my-user-folder/chrome-linux/chrome+0x9253443)
#02 0x55b26809b35c (/home/my-user-folder/chrome-linux/chrome+0x925335c)
#03 0x55b2680a0737 (/home/my-user-folder/chrome-linux/chrome+0x9258737)
#04 0x55b2680a0cbd (/home/my-user-folder/chrome-linux/chrome+0x9258cbd)
#05 0x55b2680ae508 (/home/my-user-folder/chrome-linux/chrome+0x9266508)
#06 0x55b2680a71df (/home/my-user-folder/chrome-linux/chrome+0x925f1df)
#07 0x55b2680a6ad9 (/home/my-user-folder/chrome-linux/chrome+0x925ead9)
#08 0x7f89f37d25ef (/lib64/libc-2.28.so+0x475ef)
Я также посмотрел в /var/log/messages
, чтобы увидеть, что появляется в журнале каждый раз, когда я запускаю chrome от имени пользователя, и вот что я получил.
10 сент. 14:36:23 xxxxxxxxx kernel: traps: chrome[3587350] ловит trap int3 ip:55e8901b7cad sp:7ffd344644f0 ошибка:0 в chrome[55e88b0e3000+b896000]
10 сент. 14:36:23 xxxxxxxxx systemd[1]: Запущен процесс получения дампа памяти (PID 3587352/UID 0).
10 сент. 14:36:23 xxxxxxxxx systemd-coredump[3587353]: Ограничения ресурсов отключают дампы памяти для процесса 3587350 (chrome).
10 сент. 14:36:23 xxxxxxxxx systemd-coredump[3587353]: Процесс 3587350 (chrome) пользователя 1005 создал дамп памяти.
10 сент. 14:36:23 xxxxxxxxx systemd[1]: [email protected]: Успешно.
Сервер работает под управлением Cloudlinux и cPanel. Мне нужно использовать chrome (или chromium) на хостинговом веб-сайте, у которого, насколько я знаю, есть все необходимые разрешения. Более того, я также пробовал отключить CageFS, SELinux и убрать все ограничения (веб-сайт/пользователь имеет неограниченные CPU, память и т.д.), но ничего не меняется.
Я только что столкнулся с такой же проблемой. В моем случае я запускал chromium из подпроцесса. Подпроцесс был запущен с помощью python, и я использовал модуль resource
, чтобы установить лимит на использование памяти и применить это в:
def preexec():
resource.setrlimit(resource.RLIMIT_AS, (mem_limit, mem_limit))
await asyncio.create_subprocess_exec(cmd, preexec_fn=preexec)
Удаление функции preexec решило проблему. Я нашел эту проблему, которая подсказала мне. Возможно, что-то, что запускает chromium, устанавливает ограничения ресурсов?
Ответ или решение
Проблема с запуском Chrome и Chromium с ошибкой [FATAL:partition_address_space]
, о которой вы упоминаете, может быть связана с несколькими факторами, особенно в окружении, как CloudLinux и cPanel.
Возможные причины и решения:
-
Проблемы с правами доступа и окружением:
- Chromium может требовать определенные права доступа к системным ресурсам или файлам, которые могут быть ограничены в рамках вашего пользователя. Попробуйте выполнить команду с привилегиями пользователя, который имеет доступ ко всем необходимым ресурсам, или измените конфигурацию пользователя для большего доступа.
-
Использование CageFS:
- Хотя вы упомянули, что отключили CageFS, убедитесь, что все секции конфигурации действительно отключены или что вы действуете в неограниченной среде. Некоторые файловые системы и библиотеки могут по-прежнему находиться под управлением CageFS, что может вызывать проблемы при запуске Chromium.
-
SELinux и ограничения безопасности:
- Если вы используете SELinux, попробуйте временно отключить его, чтобы убедиться, что он не мешает запуску. Для этого выполните команду:
setenforce 0
- Важно помнить, что если это решает проблему, нужно будет составить правила безопасности, чтобы не оставлять систему без защиты.
- Если вы используете SELinux, попробуйте временно отключить его, чтобы убедиться, что он не мешает запуску. Для этого выполните команду:
-
Запуск процесса с ограничениями:
- Если Chromium запускается в контексте, где применяются ограничения на использование ресурсов (например, с помощью модуля
resource
в Python), это может вызывать сбои. Убедитесь, что вы не вводите ограничения на память или адресное пространство, или временно исключите их, как вы уже делали.
- Если Chromium запускается в контексте, где применяются ограничения на использование ресурсов (например, с помощью модуля
-
Пробный запуск без дополнительных флагов:
- Попробуйте выполнить команду без дополнительных флагов, таких как
--no-sandbox
, чтобы проверить, влияет ли это на запуск. Иногда специфические флаги могут вызывать конфликты, особенно в средах с ограничениями.
- Попробуйте выполнить команду без дополнительных флагов, таких как
-
Обновление библиотек и компонентов:
- Поскольку вы упомянули, что у вас нет отсутствующих библиотек, проверьте, актуальны ли версии используемых вами библиотек. Обновление до последних стабильных версий может решить проблему. Убедитесь также, что все зависимости Chromium соответствуют требованиям.
-
Логи и диагностика:
- Всегда полезно внимательно изучить логи системных сообщений и попытаться выявить другие возможные ошибки или предупреждения, которые могут указать на причину сбоя. Ваша команда
dmesg
может показать более детальную информацию о системных ошибках.
- Всегда полезно внимательно изучить логи системных сообщений и попытаться выявить другие возможные ошибки или предупреждения, которые могут указать на причину сбоя. Ваша команда
-
Тестирование с другим пользователем:
- Если у вас есть возможность, создайте нового пользователя в системе и запустите Chromium под этим пользователем. Это может помочь исключить проблемы, связанные с конкретным профилем пользователя или конфигурацией.
Заключение:
Если ни одно из вышеперечисленных решений не подходит, возможно, стоит рассмотреть использование другой версии или сборки Chromium/Chrome, или даже альтернативных инструментов для автоматизации браузера, таких как Puppeteer или Playwright, которые могут работать с вашими ограничениями.