概述
- 目前项目会使用chromium项目的base模块
- 在调用友商一模块时,出现StackOverflow
事件分析
- 在base库的task_runner线程中,调用该模块,会出现StackOverflow
- 在另一种std::thread创建的线程中,调用该模块,正常
- 在main函数中,调用该模块,正常
因此初步推断友商模块可能对base模块的task_runner水土不符?
上IDA进行分析,发现在调用 _alloca_probe函数时出现的崩溃。
参考连接:解析__alloca_probe
该函数有1个参数,表示要展开的栈的大小。
所以 _alloca_probe 是用来开栈的,也就是说,问题不在友商,而是我们,因为线程栈耗尽,而导致崩溃。
在调用友商模块时,分析线程状态:
StackBase: 043a0000
StackLimit: 04396000
esp=0439ad90
根据这几个参数,可以看出: