设为首页 收藏本站
查看: 575|回复: 0

[经验分享] php[6491]: segfault at * rip * rsp * error 6

[复制链接]

尚未签到

发表于 2018-12-21 13:37:05 | 显示全部楼层 |阅读模式
内存不足不会引起段错误,段错误通常出现在访问了非法的地址后,非法地址分为3类:
    1. 访问的地址没有对应的物理内存。这类错误主要出现在越界访问,例如栈越界。比如说当前进程的栈只有5个页和它对应,共20k大小(x86平台),你访问的地址超过了这个范围,就会发生segmentation fault;
    2.对地址的操作与该地址的属性不符合。例如该地址对应的内存是只读的,如文本段,你却试图进行写操作;
    3.低权限访问高权限地址。这类情况发生在用户进程试图访问内核空间。例如x86中,TASK_SIZE以上的地址为内核空间,当用户态进程试图访问这些地址时,就会出现”segmentation fault“了
具体格式如下:

  解决方法:
  readelf -s a.out 可以查看符号表,根据rip所指的地址就能找到对应的函数了。
  
objdump -d a.out > a.s 可以反汇编,不但能找到函数,还能直接定位到指令。
  注:本人测试没找到map文件(即a.out),故报错的程序和函数并未找到,有找到的博友可以回复告知操作过程,在此谢过!
  另附上老外的原理解释:
  


  • Well the rip pointer tells you the instruction that caused the crash. You need to look it up in a map file.

  • In the map file you will have a list of functions and their starting address. When you load the application it is loaded to a base address.
  • The rip pointer - the base address gives you the map file address. If you then search through the map file for a function that starts at
  • an address slightly lower than your rip pointer and is followed, in the list, by a function with a higher address you have located the function that crashed.

  • From there you need to try and identify what went wrong in your code. Its not much fun but it, at least, gives you a starting point.

  • Edit: The "segfault at" bit is telling you, i'd wager, that you have dereferenced a NULL pointer. The rsp is the current stack pointer.
  • Alas its probably not all that useful. With a memory dump you "may" be able to figure out more accurately where you'd got to in the function
  • but it can be really hard to work out, exactly, where you are in an optimised build
  


file:///C:%5CUsers%5Cjason.yu%5CAppData%5CRoaming%5CTencent%5CUsers%5C249679071%5CQQ%5CWinTemp%5CRichOle%5C8%7B%5BMTL%7B%5B%7B4KOO%7BG%7D8A%5DD%60CD.jpg


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-654079-1-1.html 上篇帖子: PHP无需重编译添加扩展模块 下篇帖子: 国内PHP论坛系统和内容管理系统的发展
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表