多线程动态库里面调用静态库分配内存函数导致的崩溃cltp汇编指令导致

1、概述

        有这样的一个场景,我有一个动态库myso.so里面有函数start_crash(),用到静态库的内存分配函数,其实静态库里面的static.a 里面就封装了一个函数叫system_malloc(),函数返回的是分配的内存地址,然后发现,我在测试demo里面创建了个子线程,然后在子线程里面调用start_crash(),会发现system_malloc函数返回的地址不对,内存不可访问,使用时直接会发生崩溃

图1.1 exmaple为测试的例子,src为my.so动态库,util为负责调用malloc并返回分配的地址

多线程动态库里面调用静态库分配内存函数导致的崩溃cltp汇编指令导致_第1张图片

图1.2 util system_malloc函数

图1.3 为myso.so中的start_crash()函数

图1.4为main函数调用myso.so中的start_crash函数

多线程动态库里面调用静态库分配内存函数导致的崩溃cltp汇编指令导致_第2张图片

2、分析过程

你可能感兴趣的:(开发语言,linux)