网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月30日漏签0天
linux吧 关注:537,612贴子:2,574,478
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 7回复贴,共1页
<<返回linux吧
>0< 加载中...

常在河边走,终于碰上了严重的内存泄漏。。。

  • 只看楼主
  • 收藏

  • 回复
  • 楼兰天边云
  • ----x--x
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在此记录下,也提醒其他常在河边走的c/c++童鞋
服务端数据库接口,长连接数据库,客户端并发操作(查询)超过60多个并发就会报如下错误
in UnionCheckError:: --- db2 error report begin ---
20110402105607::[UserErr][5030014][-10009]
SQLSTATE: 57011
20110402105607::[UserErr][5030014][-10009]
NATIVE: -954
20110402105607::[UserErr][5030014][-10009]
MESSAGE: [IBM][CLI Driver][DB2/AIX64] SQL0954C   Not enough storage is available in the application heap to process the statement.   SQLSTATE=57011
20110402105607::[UserErr][5030014][-10009]
in UnionCheckError:: --- db2 error report End ---
google后说是DB2数据库设置的应用程序堆太小
$ db2 get db cfg for cmbkmcdb | grep APPLHEAPSZ
Default application heap (4KB)          (APPLHEAPSZ) = 256
APPLHEAPSZ为256,
$ db2 update db cfg for CMBKMCDB using APPLHEAPSZ 4096
改成4096后仍同样错误。
之前的接口使用DB2 ESQL写的,由于要bind,客户觉得麻烦让我们改成CLI的,服务端结构应该没什么问题,原来ESQL的接口我们测时服务端能承受几千并发也不会报SQL0954C SQLSTATE=57011
最初没有怀疑是内存泄漏,因为种种迹象都表明是数据库问题。
这个问题很可恶,造成服务端无法操作数据库提供服务,而且服务端程序也没有core 。。。
然后一点点小量的测试,无意中看了下程序的内存占用,才发现每测试一次内存占用就涨一点,这才缓然大悟。。。然后从上午开始手工检查代码(因为AIX上似乎没有顺手的检查内存泄漏的工具,valgrind要依赖一大堆东西没有时间折腾。。。)
。。。
。。。
。。。
最终在
int UnionFreeStmtHandle()
{
    //SQLFreeHandle(SQL_HANDLE_STMT, stmt_handle);
    if (SQL_NULL_HSTMT == stmt_handle || SQL_NULL_HSTMT == stmt_handle1)
        return 0;
    ……
    在此执行真正的释放动作
    ……
}
UnionFreeStmtHandle是释放stmt_handle的并不是释放stmt_handle1的,释放stmt_handle的时候stmt_handle1一般都是SQL_NULL_HSTMT,然后没有释放stmt_handle就return 0;,从此爆发。。。



  • gccer
  • -----rwx
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
原来CU那个人是你呀


2026-01-30 05:20:50
广告
不感兴趣
开通SVIP免广告
  • 楼兰天边云
  • ----x--x
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
晕倒。。。 名字都一样,你才看出来??


  • 楼兰天边云
  • ----x--x
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
回复:3楼
那个函数是释放stmt_handle的,return 0;后stmt_handle就没有被正确释放。


  • 楼兰天边云
  • ----x--x
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
回复:6楼
不知道什么时候无意加的,if哪行正确的应该是
if (SQL_NULL_HSTMT == stmt_handle)
邪恶的“||”操作符 :)
stmt_handle是全局变量


  • typhoon_wolf
  • ----xrw-
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
曾经把Java程序写出内存泄露的路过……



登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 7回复贴,共1页
<<返回linux吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示