Linux x86_64 で共有ライブラリをロードすると、
dlopen error: "FILENAME" failed to map segment from shared object: Resource temporarily unavailable
マシンには 48 GiB のホスト メモリがインストールされており、他のユーザーがログインしていません。したがって、メモリ不足が原因ではない可能性があります。
私は何十もの共有ライブラリをロードします。
コードは次のようになります (セットアップが大幅に削減されます)。そして、はいmlockall
、意図的です:
#if _POSIX_MEMLOCK > 0
#warning "POSIX_MEMLOCK available"
#else
#error "POSIX_MEMLOCK needed. Aborting"
#endif
int main()
{
if (mlockall(MCL_FUTURE)) {
printf("error page-locking\n");
exit(1);
}
void *handle;
handle = dlopen( "filename.so" , RTLD_LAZY);
}
ページロックに関するその他の制限はありますか?