您好
不好意思现在才恢复,网络一直不稳定,上不去。
ngx_http_drizzle_processor.c文件中ngx_http_upstream_drizzle_send_query和ngx_http_upstream_drizzle_recv_cols,ngx_http_upstream_drizzle_recv_rows都是直接拷贝过去的。
操作系统版本 centos 5.1
libdrizzle版本:libdrizzle-5.1.2
以上问题是调用dirzzle问题。我写了一个demo试过。
我贴一段代码您试一下吧
#include <libdrizzle-5.1/libdrizzle.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[]) { //获取每行所有列的数据
(void) argc;
(void) argv;
drizzle_st *con;
drizzle_return_t ret;
drizzle_result_st *result;
con = drizzle_create_tcp(省略);
if (con == NULL)
{
printf(" Drizzle connection object creation error \n ");
return EXIT_FAILURE;
}
ret = drizzle_connect(con);
if (ret != DRIZZLE_RETURN_OK) {
printf(" Drizzle connection failure \n ");
return EXIT_FAILURE;
}
const char *query =
"SELECT pic,uptime FROM table1 WHERE filename=\"640150f57605ef79071fe2b9059188cd.jpg\"";
result = drizzle_query(con, query, 0, &ret);
drizzle_field_t field;
int col_count = 0;
size_t offset = 0;
size_t len = 0;
size_t total = 0;
for (;;) {
drizzle_column_st *col;
col = drizzle_column_read(result, &ret);
if (col) {
drizzle_column_free(col);
} else {
省略.............
}
}
}
在 2013年3月21日星期四UTC+8下午1时48分13秒,agentzh写道:
Hello!
2013/3/20 lizhitao67116961:
> nginx的drizzle中,获取(查询)多个列值时报错如下
> *** glibc detected *** /root/work/nginx: double free or corruption (!prev):
> 0x000000000543a9e0 ***
> ngx_http_upstream_drizzle_send_query--》ngx_http_upstream_drizzle_recv_cols
>
> 在ngx_http_upstream_drizzle_recv_cols函数中调用drizzle_column_free报错!两次释放同一地址。
>
请在报告这样的问题时总是主动提供以下信息:
1. 你使用的 ngx_drizzle 模块、libdrizzle 库以及 nginx 的版本,
2. 你使用的操作系统的信息,
3. 能复现问题的最小化的但仍然足够完整的 nginx 配置(包括相应的 mysql 查询和数据样本),以及复现问题所需的相关步骤,
4. 你是否自己对相关的组件的源码进行过修改。
Best regards,
-agentzh