GBD的STACK是:
(gdb) bt
#0 0x00e48d1c in nsprecv ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#1 0x00e4bfc3 in nsrdr ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#2 0x00e2ea0f in nsdo ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#3 0x00e2bcaf in nsbrecv ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#4 0x00e5eb6f in nioqrc ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#5 0x00f71d53 in ttcdrv ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#6 0x00e65ed1 in nioqwa ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#7 0x00cca2e7 in upirtrc ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#8 0x00cc9e56 in upirtr ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#9 0x00c3fec0 in kpurcs ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#10 0x00bb9290 in kputxcmt ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#11 0x00ccf328 in OCITransCommit ()
---Type <return> to continue, or q <return> to quit---
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#12 0x00b8fca5 in sqlcomt ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#13 0x00b88d82 in sqlnst ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#14 0x00b7223e in sqlcmex ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#15 0x00b72736 in sqlcxt ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#16 0x0805383c in DBSetRoomOnline (iCtxID=0, iRoomID=5020, iOnline=0)
at db_searchinfo.cpp:2800
#17 0x080568d9 in FriendServerLogic::RoomCount (this=0xbfe104d0,
pData=0x5ea0010, len=32) at FriendServerLogic.cpp:728
#18 0x080558a6 in FriendServerLogic::OnEvent (this=0xbfe104d0,
a_evt=0x5ea0010, a_currentTime=1163424686) at FriendServerLogic.cpp:135
#19 0x080579d5 in DispacherUDP::Run (this=0xbfe10490) at dispacher_udp.cpp:60
#20 0x08062c51 in Thread::ThreadMain (arg=0xbfe10490) at thread.cpp:159
#21 0x00a3b341 in start_thread () from /lib/tls/libpthread.so.0
#22 0x008cd6fe in clone () from /lib/tls/libc.so.6
其中in DBSetRoomOnline (iCtxID=0, iRoomID=5020, iOnline=0)
at db_searchinfo.cpp:2800
函数为
int DBSetRoomOnline(int iCtxID,int iRoomID,int iOnline)
{
struct sqlca sqlca;
EXEC SQL CONTEXT USE :ctx;
EXEC SQL BEGIN DECLARE SECTION;
int iRoomIDPC;
int iOnlinePC;
EXEC SQL END DECLARE SECTION;
iRoomIDPC = iRoomID;
iOnlinePC = iOnline;
EXEC SQL UPDATE TB_AM_ROOM
SET ONLINE_COUNTS = :iOnlinePC
WHERE ROOM_ID = :iRoomIDPC;
if(sqlca.sqlcode == 0)
{
EXEC SQL COMMIT WORK; //这句开始出错
}
else
{
EXEC SQL ROLLBACK WORK;
ErrReport(sqlca);
}
return sqlca.sqlcode;
}对应的出错的那个2800行实际上是EXEC SQL COMMIT WORK; 在CPP里为
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 10;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )1144;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt(&ctx, &sqlctx, &sqlstm, &sqlfpn);//这句出错
}程序在跑了3,4天后就会有崩溃产生CORE..大家帮忙看看吧
(gdb) bt
#0 0x00e48d1c in nsprecv ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#1 0x00e4bfc3 in nsrdr ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#2 0x00e2ea0f in nsdo ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#3 0x00e2bcaf in nsbrecv ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#4 0x00e5eb6f in nioqrc ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#5 0x00f71d53 in ttcdrv ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#6 0x00e65ed1 in nioqwa ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#7 0x00cca2e7 in upirtrc ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#8 0x00cc9e56 in upirtr ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#9 0x00c3fec0 in kpurcs ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#10 0x00bb9290 in kputxcmt ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#11 0x00ccf328 in OCITransCommit ()
---Type <return> to continue, or q <return> to quit---
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#12 0x00b8fca5 in sqlcomt ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#13 0x00b88d82 in sqlnst ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#14 0x00b7223e in sqlcmex ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#15 0x00b72736 in sqlcxt ()
from /oraAPP/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1
#16 0x0805383c in DBSetRoomOnline (iCtxID=0, iRoomID=5020, iOnline=0)
at db_searchinfo.cpp:2800
#17 0x080568d9 in FriendServerLogic::RoomCount (this=0xbfe104d0,
pData=0x5ea0010, len=32) at FriendServerLogic.cpp:728
#18 0x080558a6 in FriendServerLogic::OnEvent (this=0xbfe104d0,
a_evt=0x5ea0010, a_currentTime=1163424686) at FriendServerLogic.cpp:135
#19 0x080579d5 in DispacherUDP::Run (this=0xbfe10490) at dispacher_udp.cpp:60
#20 0x08062c51 in Thread::ThreadMain (arg=0xbfe10490) at thread.cpp:159
#21 0x00a3b341 in start_thread () from /lib/tls/libpthread.so.0
#22 0x008cd6fe in clone () from /lib/tls/libc.so.6
其中in DBSetRoomOnline (iCtxID=0, iRoomID=5020, iOnline=0)
at db_searchinfo.cpp:2800
函数为
int DBSetRoomOnline(int iCtxID,int iRoomID,int iOnline)
{
struct sqlca sqlca;
EXEC SQL CONTEXT USE :ctx;
EXEC SQL BEGIN DECLARE SECTION;
int iRoomIDPC;
int iOnlinePC;
EXEC SQL END DECLARE SECTION;
iRoomIDPC = iRoomID;
iOnlinePC = iOnline;
EXEC SQL UPDATE TB_AM_ROOM
SET ONLINE_COUNTS = :iOnlinePC
WHERE ROOM_ID = :iRoomIDPC;
if(sqlca.sqlcode == 0)
{
EXEC SQL COMMIT WORK; //这句开始出错
}
else
{
EXEC SQL ROLLBACK WORK;
ErrReport(sqlca);
}
return sqlca.sqlcode;
}对应的出错的那个2800行实际上是EXEC SQL COMMIT WORK; 在CPP里为
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 10;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )1144;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt(&ctx, &sqlctx, &sqlstm, &sqlfpn);//这句出错
}程序在跑了3,4天后就会有崩溃产生CORE..大家帮忙看看吧
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货