124 Star 1 Fork 19

src-openEuler / jemalloc

 / 详情

【22.03-RC2】【arm/x86】jemalloc和php组合场景使用时,通过LD_PRELOAD加载jemalloc动态库后,执行php-fpm,报错:free(): invalid pointer 已放弃(核心已转储)

已验收
缺陷
创建于  
2022-03-03 10:23

【环境信息】
系统:arm,x86虚拟机
内存:4g
cpu:4核
OS版本:
openeulerversion=openEuler-22.03-LTS
compiletime=2022-02-25-07-53-11
gccversion=10.3.1-20220223.7.oe1
kernelversion=5.10.0-59.0.0.32.oe1
openjdkversion=1.8.0.312.b07-11.oe1

【问题复现步骤】
1、安装jemalloc和php相关的包
dnf install jemalloc* php php-fpm lsof -y
2、通过LD_PRELOAD加载jemalloc动态库
export LD_PRELOAD=/usr/lib64/libjemalloc.so
3、创建/run/php-fpm/目录为地址"/run/php fpm/www.sock"绑定socket
mkdir -p /run/php-fpm/
4、启动php-fpm 预期结果1
/usr/sbin/php-fpm
5、查看php-fpm是否启动成功 预期结果2
ps -ef | grep -E 'php-fpm|apache'
6、查看jemalloc是否生效 预期结果3
lsof -n | grep jemalloc | grep php-fpm

【预期结果】
1、启动php-fpm成功,没有报错返回
输入图片说明
2、有php-fpm进程生成
输入图片说明
3、jemalloc生效
输入图片说明

【实际结果】
1、启动php-fpm报错,返回:free(): invalid pointer 已放弃(核心已转储)
输入图片说明
2、因为启动php-fpm报错,没有php-fpm进程生成
输入图片说明
3、因为启动php-fpm报错,jemalloc没有生效
输入图片说明

【备注】
附件中有messages日志

附件
messages(6.03 KB)下载
Emily_LiuLiu 2022-03-03 10:22

评论 (2)

Emily_LiuLiu 创建了缺陷

Hi emily_liuliu, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: Runtime, and any of the maintainers: @zhenyu , @small_leek , @Charlie_Li

openeuler-ci-bot 添加了
 
sig/Runtime
标签
Emily_LiuLiu 修改了描述

问题情况说明:
1.导致问题的直接原因:设置LD_PRELOAD=/usr/lib64/libjemalloc.so 程序前期的内存管理使用了这个库里的函数,而coredump的时候free()函数调用的却是libc.so库中的函数。free()在做对齐比较的时候,失败导致的
2.也就是说libjemalloc.so的优先没有一直生效,中途又被libc.so替换了回来。使用动态库调试工具,观看调试日志:程序在加载库libbz2.so的时候执行的这个替换。
3.执行替换的原因是dlopen库加载函数传入了flag RTLD_DEEPBIND,这个符号的作用是深度绑定,会使前期设置的LD_PRELOAD失效,继续使用libc.so
4.库加载传入RTLD_DEEPBIND的原因是系统设置了配置项:CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS
处理方案:在配置了CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS的系统中运行php不建议jemalloc.so库

xu_ping 任务状态待办的 修改为已完成
Emily_LiuLiu 任务状态已完成 修改为已验收

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(3)
5329419 openeuler ci bot 1632792936
1
https://gitee.com/src-openeuler/jemalloc.git
git@gitee.com:src-openeuler/jemalloc.git
src-openeuler
jemalloc
jemalloc

搜索帮助