Охрана стека могла быть отключена?

Я пытаюсь запустить первый пример в rootbeer библиотека, которую вы можете найти здесь.

Проблема в том, что, несмотря на то, что я следовал всем их инструкциям, я получаю следующее сообщение, когда пытаюсь запустить Jar

root@ubuserver3:/home/ubuadmin/JavaJars/HelloWordGPU# java -jar HelloWorldGPU.jar
OpenJDK Client VM warning: You have loaded library /usr/lib/libcuda.so.319.37 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Exception in thread "main" java.lang.NullPointerException
        at org.trifort.rootbeer.runtime.Rootbeer.run(Rootbeer.java:104)
        at ScalarMult.test(ScalarMult.java:13)
        at Main.main(Main.java:17)

Я не человек Linux, поэтому я не понимаю, как правильно выполнить эту команду. Я также не понимаю, что они имеют в виду под этим сообщением, потому что я впервые занимаюсь программированием на GPU. Но я знаю, что проблема с GPU с неправильными командами будет проблемой.

3 ответа

Тип: execstack --version чтобы проверить, установлен ли уже execstack.

Если вы получаете команду не найден, введите: sudo apt-get install execstack -y --force-yes

Тип sudo execstack -c <file> например sudo execstack -c /usr/lib/libcuda.so

1: Проверьте версию execstack, используя следующую команду, чтобы найти установленный execstack или нет

execstack --version

2: если execstack не установлен, установите его с помощью следующей команды

sudo apt-get install execstack -y --force-yes

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

sudo execstack -c <filepath>

например: sudo execstack -c /usr/lib/libjpcap.so

Убедитесь, что вы сначала не используете 32-битный jar на 64-битной jvm

Убедитесь, что вы не используете 32-разрядную версию Java. Если вы запустите java -d64, 32-разрядная версия выдаст ошибку.

Что делает файл /usr/lib/libcuda.so.319.37 содержать?

Если это 0-байтовый файл, что-то действительно не так, поэтому попробуйте восстановить систему, переустановив эту библиотеку.

У меня была такая же проблема в smartgit, где использовалась библиотека в локальной папке конфигурации, которая была каким-то образом повреждена и представляла собой 0-байтовый файл. Так что удаление папки конфигурации и перезапуск приложения сработали для меня. Это тоже может быть решением.

Другие вопросы по тегам