- 论坛徽章:
- 0
|
原帖由 lyxmoo 于 2007-3-1 19:15 发表\r\n\r\n\r\nLoaded symbols for /usr/lib/libthread.so.1\r\nw#0 0xfe39437c in _insert_nolock () from /usr/lib/libc.so.1\r\n(gdb) where\r\n#0 0xfe39437c in _insert_nolock () from /usr/lib/libc.so.1\r\n#1 0xfe39423c in popen () from /usr/lib/libc.so.1\r\n#2 0x00044ae0 in get_value_snmp ()\r\n(gdb) quit\r\n\r\n\r\n好了,popen 掉到 里面了。\r\n\r\n看popen 的代码。那个 _insert_nolock 估计就是 node 越界操作了。\r\n\r\n 87 FILE *\r\n 88 popen(const char *cmd, const char *mode)\r\n 89 {\r\n 90 \r\n \r\n\r\n从调用栈来看,不足以说明是谁的错误,core dump和panic不是一回事,如果你传给popen的参数是有问题的呢?从coredump 读参数的值不是难事,即便没有gcc -g来编译源代码。\r\n\r\n最好是用gdb读出poen的两个参数的值,我们根据入口参数的这个值应该很容易复现这个bug,不但能得到coredump的原因,而且还可以知道是应用程序的问题,还是这个函数的问题。\n\n[ 本帖最后由 Solaris12 于 2007-3-1 20:22 编辑 ] |
|