Получение "Segmentation fault (core dumped)" каждый раз, когда я пытаюсь запустить watch с nvidia-smi

Вопрос или проблема

В настоящее время я использую графические процессоры на сервере с Ubuntu для запуска моделей машинного обучения. Мне часто нравится использовать команду watch для мониторинга статусов GPU, например watch -n 1 nvidia-smi. Обычно это работает нормально, но я заметил, что на одном из серверов возникает ошибка:

watch: /usr/local/lib/libncursesw.so.6: нет информации о версии (требуется для watch)
watch: /usr/local/lib/libncursesw.so.6: нет информации о версии (требуется для watch)
Ошибка сегментации (аварийный дамп)

Я попытался выполнить sudo apt-get install libncursesw6 и получил libncursesw6 уже является самой новой версией (6.2-0ubuntu2)..

Есть ли что-то еще, что я могу сделать, чтобы исправить эту ошибку?

Правка

Вывод lddtree $PATH_TO_WATCH таков:

watch => /usr/bin/watch (интерпретатор => /lib64/ld-linux-x86-64.so.2)
    libncursesw.so.6 => /usr/local/lib/libncursesw.so.6
        libtinfow.so.6 => /usr/local/lib/./libtinfow.so.6
    libtinfo.so.6 => /usr/local/lib/libtinfo.so.6
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
        ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2

Оказалось, что команда watch вызвала эту ошибку, но htop также вызывал эту ошибку. Один мой старый коллега смог мне помочь, сказав, что я должен выполнить следующие команды:

sudo rm -f /usr/local/lib/libncursesw.so.6
sudo ln -s /lib/x86_64-linux-gnu/libncursesw.so.6 /usr/local/lib/libncursesw.so.6

Полагаю, что имел место конфликт между предыдущей библиотекой и символической ссылкой? Если у кого-то есть лучшее и более полное понимание этого, пожалуйста, не стесняйтесь редактировать мой ответ.

Ответ или решение

Причины возникновения ошибки "Segmentation fault (core dumped)" при запуске команды watch с nvidia-smi

Ситуация, описанная вами, указывает на наличие конфликта версий библиотек, которые используются в процессе выполнения команд, таких как watch и htop. Одна из возможных причин данной проблемы заключается в следующем:

  1. Конфликт библиотек: Судя по выводам, когда вы вызываете watch, он пытается загрузить библиотеку libncursesw.so.6 из пути /usr/local/lib/, что говорит о том, что на вашем сервере была установлена пользовательская версия этой библиотеки. Это может привести к несовместимости, если версия библиотеки не соответствует ожидаемой.

  2. Отсутствие информации о версиях: Сообщение об ошибке "no version information available (required by watch)" указывает на то, что библиотека, которую использует watch, не предоставляет необходимую информацию о версиях. Это может происходить, если библиотека была собрана с неправильными параметрами или несовместима с вашей текущей системой.

  3. Символическая ссылка: Решение, предложенное вашим коллегой, связано с созданием символической ссылки, указывающей на стандартную версию библиотеки, расположенной в системных директориях, таким образом, вы устраняете конфликт, вызванный пользовательской версией библиотеки.

Решение проблемы

Ваш коллега предложил следующее решение, которое предполагает удаление конфликтующей библиотеки и создание новой символической ссылки:

sudo rm -f /usr/local/lib/libncursesw.so.6
sudo ln -s /lib/x86_64-linux-gnu/libncursesw.so.6 /usr/local/lib/libncursesw.so.6

Эти команды выполняют следующие действия:

  • Первая команда удаляет пользовательскую библиотеку libncursesw.so.6, которая может быть некорректной или устаревшей.
  • Вторая команда создает символическую ссылку к системе, гарантируя, что программы, такие как watch и htop, будут использовать корректную версию библиотеки.

Дополнительные рекомендации

  1. Проверка версий: Убедитесь, что у вас установлены последние версии необходимых библиотек. Это можно сделать с помощью команд:

    sudo apt-get update
    sudo apt-get upgrade
  2. Удаление сторонних библиотек: Если у вас есть и другие версии библиотек ncurses или других библиотек, установленных в /usr/local/lib/, рассмотрите возможность их удаления, так как они могут создавать дополнительные конфликты.

  3. Использование среды: Если вам необходимо использовать специфические версии библиотек для других проектов, рассмотрите использование контейнеров (например, Docker), которые позволят вам изолировать окружение с необходимыми версиями библиотек.

  4. Масштабная проверка: После внесенных изменений перезапустите терминал и попробуйте снова запустить команды watch и htop, чтобы убедиться, что ошибка была устранена.

Эти шаги должны помочь вам избежать ошибок сегментации и обеспечить стабильную работу ваших команд. Надеюсь, эта информация была полезной для решения вашей проблемы.

Оцените материал
Добавить комментарий

Капча загружается...