查询动态库中的函数符号
objdump -T xx.so | grep “funname”
nm -u hello.o
显示hello.o 中的未定义符号,需要和其他对象文件进行链接.
nm -A /usr/lib/ 2>/dev/null | grep "T memset"*
在 /usr/lib/ 目录下找出哪个库文件定义了memset函数.
strings libpam.so
无符号和栈破坏情况下coredump的分析方法
无符号和栈破坏情况下coredump的分析方法_Nets9527的博客-CSDN博客
Linux下用gdb 调试、查看代码堆栈 - 程良 - 博客园
PAM详解(二)PAM开发-rexrock23-ChinaUnix博客
ARM STP指令的用法_上进小青年儿的博客-CSDN博客_arm stp
linux中pam模块 - ilinux_one - 博客园
总结:
和pam没太大关系,因为尝试过写了一个main.cpp pam登录,可以正常登录成功。
pidof a.out
/lib/aarch64-linux-gnu
PAM unable to resolve symbol: pam_sm_setcred
如下编译出的,登录无效
g++ test_pam.cpp -static -o a.out -L/root/libpam_1.3.1/ -lpam -ldl
该问题是xmlrpc库中子线程设置了thread stack size, 256K(默认最小128K,实际设置值是256K),
这个stacksize在pam认证调用pam_ecyyptfs.so中的pam_sm_authenticate 时导致stack空间不足出现崩溃。
解决方法:把xmlrpc库的子线程的stacksize改为默认最小512K, 问题解决。