ユーザーとして特定のスクリプト/コマンドを実行すると中断されますが、rootとして実行すると正常に動作します。

ユーザーとして特定のスクリプト/コマンドを実行すると中断されますが、rootとして実行すると正常に動作します。

特定のスクリプトまたはコマンドを実行すると中断されるユーザーがいますjenkins(Androidビルドサーバーです)。と同じスクリプト/コマンドを実行するとroot正常に実行されます。

例:

ユーザーとしてjenkins:
> java
--hang--

ユーザーとしてroot
> java
- ヘルプ出力を使用してください -

jenkinsこれは(例:and)で実行される多くのコマンドでandroid発生しますが、java同じコマンドはうまく機能します。pscat

これは最近開発されたものなので、一種の権限の問題かもしれませんが、確信はありません。

更新:呼び出し時に中断された set -xことを示すスクリプトの先頭に追加されました。java + exec /etc/alternatives/java_sdk_1.8.0/bin/java -Dorg.gradle.appname=gradlew -classpath /var/lib/jenkins/workspace/android-project/gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain assembleDebug

jenkinsで実行するものとrootユーザーとして実行することの違いは、次の行でstrace -fo java違いを示しています。

5319  stat("/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-2.b16.e | 5302  stat("/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-2.b16.e
5319  open("/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-2.b16.e | 5302  open("/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-2.b16.e
5319  stat("/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-2.b16.e | 5302  stat("/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-2.b16.e
5319  open("/opt/glibc-2.14/lib/tls/x86_64/libpthread.so.0",  | 5302  open("/etc/ld.so.cache", O_RDONLY) = 3
5319  stat("/opt/glibc-2.14/lib/tls/x86_64", 0x7ffe601248c0)  | 5302  fstat(3, {st_mode=S_IFREG|0644, st_size=49448, ...}) =
5319  open("/opt/glibc-2.14/lib/tls/libpthread.so.0", O_RDONL | 5302  mmap(NULL, 49448, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fa
5319  stat("/opt/glibc-2.14/lib/tls", 0x7ffe601248c0) = -1 EN | 5302  close(3)                          = 0
5319  open("/opt/glibc-2.14/lib/x86_64/libpthread.so.0", O_RD | 5302  open("/lib64/libpthread.so.0", O_RDONLY) = 3
5319  stat("/opt/glibc-2.14/lib/x86_64", 0x7ffe601248c0) = -1 | 5302  read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0
5319  open("/opt/glibc-2.14/lib/libpthread.so.0", O_RDONLY) = | 5302  fstat(3, {st_mode=S_IFREG|0755, st_size=146592, ...}) =

左はjenkinsユーザーです。環境変数を指すglibc-2.14関連の領域では失敗したようですLD_LIBRARY_PATH

答え1

重要な要約:一部のユーザーは環境変数を有効にしていましたが、glibc-2.14Java VMの実行に失敗しました。

strace diffを見てください。特に次の行を見てください。

5319  open("/opt/glibc-2.14/lib/libpthread.so.0", O_RDONLY)

これは、一部のユーザーがglibc-2.14バイナリを使用し、他のユーザーがシステムライブラリglibc(バージョン2.12)を使用していることを示します。

違いは、一部のユーザーは環境LD_LIBRARY_PATH変数をこのglibc-2.14ディレクトリに設定し、他のユーザーはそうではないので、システムの2.12LD_LIBRARY_PATH

関連情報