android - APP CRASH-致命信号 11 (SIGSEGV),代码 1 (SEGV_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;
}
解决方案
推荐阅读
- javascript - 如何优化从 O(n^2) 到 O(n) 或类似的嵌套 for 循环的打字稿?
- python - 制作 RC4 算法,KSA(密钥调度算法)的问题
- java - 与 JavaFX 控制器相比,如何在 Spring MVC 中正确定义控制器
- python - 如何打印多个函数的返回值?
- c# - 扫描特定区域的像素
- matplotlib - 如何使用networkx将两个图形合二为一?
- java - 这个 Android LiveData/Threading 代码是否有可能给出某种并发问题或意外结果?
- javascript - React 组件正在重新安装任何父状态更改。不知道为什么
- javascript - Android webview - 如何从外部存储中获取文件
- vuejs3 - vue3:显示完整对象很好的奇怪情况,但访问其元素之一返回未定义