C********e 发帖数: 219 | 1 接手了一个c++的程序,以前的程序员不愿意指导,自己也比较愚钝。请大侠们指点
不明白为什么usleep(1000)发生overflow?是因为其他线程有overflow的情况吗?如何
查看其他线程里面的变量值呢?
Program terminated with signal 6, Aborted.
#0 0x0000003cfd89a1e1 in nanosleep () from /lib64/libc.so.6
(gdb) bt
#0 0x0000003cfd89a1e1 in nanosleep () from /lib64/libc.so.6
#1 0x0000003cfd8ce8f4 in usleep () from /lib64/libc.so.6
#2 0x0000000000498e17 in MyClass::StartUp (this=0x2b4484725010, aName=
Traceback (most recent call last):
File "/usr/share/gdb/python/libstdcxx/v6/printers.py", line 469, in to_
string
return self.val['_M_dataplus']['_M_p'].string (encoding, length = len)
OverflowError: signed integer is greater than maximum
) at src/MyClass.cpp:153
#3 0x00000000004a8382 in main (argc=2, argv=0x7fffcc8cdb88) at src/classfile
.cpp:173
(gdb) frame 2
#2 0x0000000000498e17 in MyClass::StartUp (this=0x2b4484725010, aName=
Traceback (most recent call last):
File "/usr/share/gdb/python/libstdcxx/v6/printers.py", line 469, in to_
string
return self.val['_M_dataplus']['_M_p'].string (encoding, length = len)
OverflowError: signed integer is greater than maximum
) at src/MyClass.cpp:153
warning: Source file is more recent than executable.
153 usleep(1000);
(gdb) l
148
149 while ( GetThreadListSize() > 2 )
150 {
151 int oTry = 0;
152 while (oTry++ < 50)
153 usleep(1000);
154 }
155 m_Thread_List.RemoveAll();
156
157 return (0);
(gdb) print oTry
$1 = 44
(gdb) |
m*******l 发帖数: 12782 | 2 signed integer is larger than maximum?
【在 C********e 的大作中提到】 : 接手了一个c++的程序,以前的程序员不愿意指导,自己也比较愚钝。请大侠们指点 : 不明白为什么usleep(1000)发生overflow?是因为其他线程有overflow的情况吗?如何 : 查看其他线程里面的变量值呢? : Program terminated with signal 6, Aborted. : #0 0x0000003cfd89a1e1 in nanosleep () from /lib64/libc.so.6 : (gdb) bt : #0 0x0000003cfd89a1e1 in nanosleep () from /lib64/libc.so.6 : #1 0x0000003cfd8ce8f4 in usleep () from /lib64/libc.so.6 : #2 0x0000000000498e17 in MyClass::StartUp (this=0x2b4484725010, aName= : Traceback (most recent call last):
|
C********e 发帖数: 219 | 3 这就是不解之处啊。
那个1000怎么也不会大于usleep允许的最大值吧?而且这个程序也不是一直出问题。现
在一共80个实例在运行,只有两个最近开始出问题的。其中一个是live site的,另一
个是DR site的。
【在 m*******l 的大作中提到】 : signed integer is larger than maximum?
|
m*******l 发帖数: 12782 | 4 usleep should be able to take a value less than 1M.
【在 C********e 的大作中提到】 : 这就是不解之处啊。 : 那个1000怎么也不会大于usleep允许的最大值吧?而且这个程序也不是一直出问题。现 : 在一共80个实例在运行,只有两个最近开始出问题的。其中一个是live site的,另一 : 个是DR site的。
|
l*********s 发帖数: 5409 | 5 warning: Source file is more recent than executable. |
t****t 发帖数: 6806 | 6 first run with valgrind.
then run with helgrind.
【在 C********e 的大作中提到】 : 这就是不解之处啊。 : 那个1000怎么也不会大于usleep允许的最大值吧?而且这个程序也不是一直出问题。现 : 在一共80个实例在运行,只有两个最近开始出问题的。其中一个是live site的,另一 : 个是DR site的。
|
m*******l 发帖数: 12782 | 7 en. 这个而是一个提示
【在 l*********s 的大作中提到】 : warning: Source file is more recent than executable.
|
C********e 发帖数: 219 | 8 valgrind显示了很多大概不相关的oracle occi里面的uninitialized vairable,
condition jump based on uninitialized variable什么的,都是oracle-
instantclient shared library里面的
我试试helgrind。
谢谢建议
【在 t****t 的大作中提到】 : first run with valgrind. : then run with helgrind.
|
C********e 发帖数: 219 | 9 这个应该不是什么大问题,core dump从产品服务器拷出来的。source file是后来从
svn的tag checkout的。
【在 l*********s 的大作中提到】 : warning: Source file is more recent than executable.
|
f****4 发帖数: 1359 | 10 你先确认用得是正确的source file,正确的binary file
再gdb
看看是不是缺少debug info,记得再做一个
(gdb)info threads
(gdb)thread apply all bt
【在 C********e 的大作中提到】 : 这个应该不是什么大问题,core dump从产品服务器拷出来的。source file是后来从 : svn的tag checkout的。
|
C********e 发帖数: 219 | 11 谢谢,是正确的source file,正确的binary file
我试试info threads
【在 f****4 的大作中提到】 : 你先确认用得是正确的source file,正确的binary file : 再gdb : 看看是不是缺少debug info,记得再做一个 : (gdb)info threads : (gdb)thread apply all bt
|
f****4 发帖数: 1359 | 12 --undef-value-errors=no // 不检查undef values
--show-reachable=no // 这样启动会快点
【在 C********e 的大作中提到】 : valgrind显示了很多大概不相关的oracle occi里面的uninitialized vairable, : condition jump based on uninitialized variable什么的,都是oracle- : instantclient shared library里面的 : 我试试helgrind。 : 谢谢建议
|
k****5 发帖数: 546 | 13 backtrace 的输出是啥
【在 C********e 的大作中提到】 : 接手了一个c++的程序,以前的程序员不愿意指导,自己也比较愚钝。请大侠们指点 : 不明白为什么usleep(1000)发生overflow?是因为其他线程有overflow的情况吗?如何 : 查看其他线程里面的变量值呢? : Program terminated with signal 6, Aborted. : #0 0x0000003cfd89a1e1 in nanosleep () from /lib64/libc.so.6 : (gdb) bt : #0 0x0000003cfd89a1e1 in nanosleep () from /lib64/libc.so.6 : #1 0x0000003cfd8ce8f4 in usleep () from /lib64/libc.so.6 : #2 0x0000000000498e17 in MyClass::StartUp (this=0x2b4484725010, aName= : Traceback (most recent call last):
|