Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android 15上模型初始化失败 signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) #5901

Open
mamaofei1995 opened this issue Feb 11, 2025 · 0 comments

Comments

@mamaofei1995
Copy link

mamaofei1995 commented Feb 11, 2025

error log | 日志或报错信息 | ログ

ncnn框架log:

ncnn0000: fopen /proc/self/auxv failed

crash堆栈:

(ncnn::DataReaderFromAndroidAsset::scan(char const*, void*) const+164) 
(ncnn::Net::load_param(ncnn::DataReader const&)+84) 
(ncnn::Net::load_param(AAssetManager*, char const*)+84)
(XXXX::init(AAssetManager*)+212)

反编译so:

int DataReaderFromAndroidAsset::scan(const char* format, void* p) const
{
    if (!d->mem)
    {
        off_t pos = AAsset_seek(d->asset, 0, SEEK_CUR);
        d->mem = (const unsigned char*)AAsset_getBuffer(d->asset);
        d->mem += pos;
    }

    int fmtlen = strlen(format);

    char* format_with_n = new char[fmtlen + 3];
    sprintf(format_with_n, "%s%%n", format);

    int nconsumed = 0;
    int nscan = sscanf((const char*)d->mem, format_with_n, p, &nconsumed); // crash位置
    d->mem += nconsumed;

    delete[] format_with_n;

    if (nconsumed == 0)
        return 0;

    AAsset_seek(d->asset, nconsumed, SEEK_CUR);

    return nscan;
}
#endif // NCNN_STRING

context | 编译/运行环境 | バックグラウンド

运行环境:Android 15
ncnn版本:20240410 56775de (https://github.com/Tencent/ncnn/releases/tag/20240410)
ps:ncnn-20231027-android 同样存在该问题

how to reproduce | 复现步骤 | 再現方法

复现难度较大,大量线上数据反馈

more | 其他 | その他

模型初始化逻辑:

    LOGD("model init start");
    int p = predictor->load_param(mgr, "xxx.ncnn.param");
    if (p != 0) {
        LOGD("load param error!!!");
        return -1;
    }
    int b = predictor->load_model(mgr, "xxx.ncnn.bin");
    if (b != 0) {
        LOGD("load bin error!!");
        return -2;
    }
    LOGD("model init end");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant