Я звоню dlopen ("libjvm.so", RTLD_NOLOAD)
на RHEL 64 в рамках 64-битного Java-процесса. и он терпит неудачу с ошибкой:dlopen failing on Rhel 7.2, 64 бит для libjvm.so
libjvm.so: invalid mode for dlopen(): Invalid argument
Я сделал lsof -p <pid of java process>
и это показывает libjvm.so как загруженный модуль. libjvm.so загружается с пути jre1.8.0_121/lib/amd64/server/libjvm.so
. Не удалось найти больше об этой ошибке. То же самое отлично работает при использовании 32-разрядной версии java. где libjvm.so загружается из каталога lib/i386/client
. Оцените любые указатели о том, где искать причину или что эта ошибка действительно означает. Благодарю.
Спасибо за ваш ответ. Позвольте мне сделать снимок .. но то же самое прекрасно работает при использовании 32-битного Java-процесса ... Я не хочу загружать эту библиотеку. Я просто хочу получить дескриптор того, который уже загружен. – Prakash
Спасибо за ответ .. RTLD_LAZY | RTLD_NOLOAD работает. Я не знаю, зачем это нужно для 64x .. на 32 он работает только с RTLD_NOLOAD .. – Prakash
Я только что проверил источники GLIBC и проверил «один из« RTLD_ {NOW, LAZY} должен быть установлен »был добавлен в 1998 году. У меня нет объяснений, почему это работает для вас в 32-битном режиме; это не должно. Тривиальный тест в моей системе, пытающийся «dlopen» («libc.so.6», RTLD_NOLOAD), терпит неудачу как в 32, так и в 64-битных режимах. –