Неожиданный сбой JVM при запуске — Проблемный фрейм readdir_r 0x36 — Apparmor включен

#java #jvm #apparmor #jfr

#java #jvm #apparmor #jfr

Вопрос:

При включенном Apparmor:

Всякий раз, когда я запускаю JVM после включения параметра JFR через JVM, JVM завершает работу со следующей ошибкой.

 # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.181-b25 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libc.so.6 0xc8556]  readdir_r 0x36
#

...
...

Stack: [0x00007fa86c86f000,0x00007fa86c970000],  sp=0x00007fa86c96eb20,  free space=1022k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libc.so.6 0xc8556]  readdir_r 0x36
V  [libjvm.so 0x6a73d5]  Jfr::initialize_stage_one() 0xc5
V  [libjvm.so 0x6a8bcf]  JfrActivator::start_stage_one(Thread*) 0xf
V  [libjvm.so 0x6a8e8d]  JfrActivator::on_vm_init(Thread*) 0xcd
V  [libjvm.so 0xa7f8ca]  Threads::create_vm(JavaVMInitArgs*, bool*) 0xc0a
V  [libjvm.so 0x6d8d74]  JNI_CreateJavaVM 0x74
C  [libjli.so 0x797e]  JavaMain 0x9e
C  [libpthread.so.0 0x76ba]  start_thread 0xca
  

Мои настройки JFR похожи:

 JFR_JAVA_OPTS="-XX: UnlockCommercialFeatures -XX: FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,disk=true,settings=profile,repository=/tmp,maxage=60m,loglevel=info"
  

Когда Apparmor отключен
JVM запускается без каких-либо ошибок.

Мое требование заключается в том, что я должен поддерживать Apparmor включенным для моего приложения. Как мне избавиться от этой ошибки?

Спасибо.

Комментарии:

1. Происходит ли это для более новых версий JDK 8 или JDK 11?

2. Я использовал только jdk1.8 (сборка 1.8.0_181-b25).

3. JFR, вероятно, пытается инициализировать дисковое хранилище (/ tmp в вашем случае) или прочитать данные из / proc, но Apparmor запрещает доступ.