memcachedをベンチマークしようと思ってCentOS 5.5でmcbの1.0RC2をコンパイルして使っているのですが、なぜかセグメンテーション違反となり落ちてしまいます。しかし私はCはさっぱりわからないので・・・。とりあえずメモリ関連だと思って適当に値をいじってみました。
--- mcb.c.orig 2010-08-13 10:09:25.000000000 +0900
+++ mcb.c 2010-08-13 10:33:33.000000000 +0900
@@ -387,11 +387,11 @@

assert(0 <= no && no < sysval.thread_num);

- if ((buff = calloc(1, sysval.data_len * 2 + 100)) == NULL) {
+ if ((buff = calloc(1, sysval.data_len * 2 + 2000)) == NULL) {
elog("calloc error");
exit(-1);
}
- if ((data = calloc(1, sysval.data_len * 2 + 1)) == NULL) {
+ if ((data = calloc(1, sysval.data_len * 2 + 2000)) == NULL) {
elog("calloc error");
exit(-1);
}
-nの値(スレッド当たりの送信コマンド数)によってもっと数字を大きくしないといけないかもしれません。とりあえず-n 1000000まではいけました。ちなみになんでこうなのか理屈はわかってません。(^^;