APP崩溃-致命信号11SIGSEGV,代码1SEGV_MAPERR

问题描述

当我的应用程序崩溃时,执行了一些memcpy()时, 这是调用堆栈

08-14 16:01:11.209 F/DEBUG   (20611): signal 11 (SIGSEGV),code 1 (SEGV_MAPERR),fault addr 0xffffffff7428d7f8
08-14 16:01:11.259 F/DEBUG   (20611): backtrace:
08-14 16:01:11.259 F/DEBUG   (20611):     #00 pc 000000000001c7e4  /system/lib64/libc.so (memcpy+116)
08-14 16:01:11.259 F/DEBUG   (20611):     #01 pc 0000000000532278  (strdup+76)
08-14 16:01:11.259 F/DEBUG   (20611):     #02 pc 0000000000496fec

由于我使用公共池在strdup()中为源和目标分配了内存,并且strdup()的循环数小于n。我怀疑是否发生了内存重叠。您能否提供一些解决此崩溃的解决方案。 (因为崩溃是随机观察到的。)

示例:其中string是具有char * ptr和int len成员的结构。

char* strdup(pool *pool,string *d,const string *s)
{
    if (d == s)
    return dst;

    if (s->len) 
    {
    d->ptr = (char*)pool_alloc(pool,s->len);
    memcpy(d->ptr,s->ptr,s->len);
    }
    d->len = s->len;
    return d;
}

  

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)