跪求:linux运行程序,在mysql_real_query()里出现段错误,但程序实在检查不出什么错误
时间:2011-03-02
来源:互联网
程序因为信号11退出:Program terminated with signal 11, Segmentation fault.
用gdb看产生的core文件,栈情况如下:
那个sql语句,用工具登录mysql数据库直接运行,是可以的,说明sql语句应该没问题. 实在找不出哪的问题,请高人指点。
交代一下程序背景,这是一个后台服务程序,启动时会产生100个链接的数据库连接池,和100个事务处理线程。问题发生在进程启动时,从数据库连接池中取一个连接去数据库取一些数据出来进行缓存。
个人怀疑是连接池或线程池太多了,占用了过多的内存,导致从数据库中取数据时,没有内存可以分配给取出来的数据。因为将连接池和线程池改到非常小(小于5),就有时可以正常启动,但也有无法启动的时候。
#0 0x00168359 in malloc_consolidate () from /lib/libc.so.6
#1 0x0016a3bd in _int_malloc () from /lib/libc.so.6
#2 0x0016c3ab in malloc () from /lib/libc.so.6
#3 0x0070c8dd in my_malloc () from /usr/lib/mysql/libmysqlclient.so.15
#4 0x0070fb5a in alloc_root () from /usr/lib/mysql/libmysqlclient.so.15
#5 0x007320c0 in cli_read_rows () from /usr/lib/mysql/libmysqlclient.so.15
#6 0x00732c81 in ?? () from /usr/lib/mysql/libmysqlclient.so.15
#7 0x007313f4 in mysql_real_query () from /usr/lib/mysql/libmysqlclient.so.15
#8 0x080908e9 in CMysql::Query (this=0x8eed330,
szSqlString=0xbf9b8e66 "select eteamid,userid,nickname,signature,skyuser,skypasswd,mobile,telephone from imenterdb_h.entermember") at src/api_mysql.cpp:93
#9 0x0808cb08 in db_get_group_member_info_e (user_id=0x0, vec=@0xbf9b97c8) at src/op_db.cpp:1495
#10 0x080a4142 in CCacheSyn::cache_syn_user (this=0x9053a18) at src/HashTable.cpp:209
#11 0x080a43af in CCacheSyn::cache_syn (this=0x9053a18) at src/HashTable.cpp:348
#12 0x0804dcc1 in main (argc=3, argv=0xbf9b9bf4) at main.cpp:346
用gdb看产生的core文件,栈情况如下:
那个sql语句,用工具登录mysql数据库直接运行,是可以的,说明sql语句应该没问题. 实在找不出哪的问题,请高人指点。
交代一下程序背景,这是一个后台服务程序,启动时会产生100个链接的数据库连接池,和100个事务处理线程。问题发生在进程启动时,从数据库连接池中取一个连接去数据库取一些数据出来进行缓存。
个人怀疑是连接池或线程池太多了,占用了过多的内存,导致从数据库中取数据时,没有内存可以分配给取出来的数据。因为将连接池和线程池改到非常小(小于5),就有时可以正常启动,但也有无法启动的时候。
#0 0x00168359 in malloc_consolidate () from /lib/libc.so.6
#1 0x0016a3bd in _int_malloc () from /lib/libc.so.6
#2 0x0016c3ab in malloc () from /lib/libc.so.6
#3 0x0070c8dd in my_malloc () from /usr/lib/mysql/libmysqlclient.so.15
#4 0x0070fb5a in alloc_root () from /usr/lib/mysql/libmysqlclient.so.15
#5 0x007320c0 in cli_read_rows () from /usr/lib/mysql/libmysqlclient.so.15
#6 0x00732c81 in ?? () from /usr/lib/mysql/libmysqlclient.so.15
#7 0x007313f4 in mysql_real_query () from /usr/lib/mysql/libmysqlclient.so.15
#8 0x080908e9 in CMysql::Query (this=0x8eed330,
szSqlString=0xbf9b8e66 "select eteamid,userid,nickname,signature,skyuser,skypasswd,mobile,telephone from imenterdb_h.entermember") at src/api_mysql.cpp:93
#9 0x0808cb08 in db_get_group_member_info_e (user_id=0x0, vec=@0xbf9b97c8) at src/op_db.cpp:1495
#10 0x080a4142 in CCacheSyn::cache_syn_user (this=0x9053a18) at src/HashTable.cpp:209
#11 0x080a43af in CCacheSyn::cache_syn (this=0x9053a18) at src/HashTable.cpp:348
#12 0x0804dcc1 in main (argc=3, argv=0xbf9b9bf4) at main.cpp:346
作者: gaoht 发布时间: 2011-03-02
段错误很有可能就缓冲区溢出造成的。。。
LZ检查一下代码中有关内存的操作。。有没有过界的。。
LZ检查一下代码中有关内存的操作。。有没有过界的。。
作者: c395565746c 发布时间: 2011-03-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28