web-dev-qa-db-ja.com

スタックガードが無効になっている可能性がありますか?

rootbeerライブラリで最初の例を実行しようとしています。これは here から見つけることができます。

問題は、すべての指示に従ったにもかかわらず、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をいじることが問題になることは知っています。

16
PeakGen

タイプ:execstack --version execstackがすでにインストールされているかどうかを確認します。

コマンドが見つからない場合は、タイプ:Sudo apt-get install execstack -y --force-yes

タイプSudo execstack -c <file>例:Sudo execstack -c /usr/lib/libcuda.so

10
absenthecon

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

3
Pranav V R

最初に64ビットJVMで32ビットjarを実行していないことを確認してください

2
andrej

32ビットJavaを実行していないことを確認してください。 Java -d64を実行すると、32ビットバージョンはエラーを出力します。

1
dhuie