I have JNI code with AAssetManager. Sometimes, I can see in Google play console the following error:
#00 pc 00000000000223bc /system/lib64/libc.so (abort+116)
#01 pc 00000000000934e8 /system/lib64/libc.so (__fortify_fatal(char const*, ...)+120)
#02 pc 0000000000092b50 /system/lib64/libc.so (HandleUsingDestroyedMutex(pthread_mutex_t*, char const*)+52)
#03 pc 00000000000929cc /system/lib64/libc.so (pthread_mutex_lock+228)
#04 pc 00000000000acfe8 /system/lib64/libc++.so (std::__1::mutex::lock()+8)
#05 pc 0000000000010a7c /system/lib64/libandroid.so (AAssetManager_open+64)
#06 pc 00000000002870fc /data/app/com.company.game-pQJ8F8k_RlY7Xj6moTsxGg==/lib/arm64/libgame.so (AndroidUtils::AssetFopen(char const*, char const*)+36)
Code for AndroidUtils:AssetFopen
is this:
AAssetManager* AndroidUtils::android_asset_manager = nullptr;
FILE* AndroidUtils::AssetFopen(const char* fname, const char* mode)
{
#if defined(DEBUG) || defined(_DEBUG)
if(mode[0] == 'w') return nullptr;
#endif
if (android_asset_manager == nullptr)
{
return nullptr;
}
AAsset* asset = AAssetManager_open(android_asset_manager, fname, AASSET_MODE_BUFFER);
if(!asset)
{
return nullptr;
}
return funopen(asset, AndroidUtils::AssetRead, AndroidUtils::AssetWrite, AndroidUtils::AssetSeek, AndroidUtils::AssetClose);
}
static variable android_asset_manager
is directly set via JNI from context.resources.assets
.
Any idea what can cause this?