Охрана стека могла быть отключена?
Я пытаюсь запустить первый пример в 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-байтовый файл. Так что удаление папки конфигурации и перезапуск приложения сработали для меня. Это тоже может быть решением.