namazu-dev(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mod_namazu (Re: FastCGI)
いわきりです
Satoru Takabayashiさんの<199907120524.OAA22920@xxxxxxxxxxxxxx>から
>割と緩やかな膨張ですね。 free し忘れているポインタがどこかに
>あると思うんだけど、簡単に見つける方法はないものかな? (定石
>がありそうなんだけど、どなたか知りません?)
namazu-currentで追いかけました。
メモリリークを起こしている場所を3箇所発見。
(1) namazuをcgiとして利用する際にQUERY_STRING無しの場合
namazu.cでfree_dbnames()を呼ばずにexit(1)で終了している。
(2)
(3) hlist.c内でテンポラリとして利用する HLIST work, tmpの
未初期化。それぞれwork.n, tmp.nが未値なのでfree_hlist()に
失敗。
以上です。
re_match.c, regex.c, result.c, util.cはまだ追いかけてません m(_ _)m
diff -ruN src.orig/hlist.c src/hlist.c
--- src.orig/hlist.c Tue Jul 13 17:27:03 1999
+++ src/hlist.c Tue Jul 13 17:28:39 1999
@@ -419,6 +419,7 @@
void sort_hlist(HLIST hlist, char *mode)
{
HLIST work;
+ work.n = hlist.n;
malloc_hlist(&work, hlist.n);
if (! strcmp(mode, "score")) {
@@ -450,6 +451,7 @@
int m, n;
HLIST tmp;
+ tmp.n = 1;
malloc_hlist(&tmp, 1);
m = 0;
n = hlist.n - 1;
diff -ruN src.orig/namazu.c src/namazu.c
--- src.orig/namazu.c Tue Jul 13 17:27:03 1999
+++ src/namazu.c Tue Jul 13 17:31:21 1999
@@ -276,6 +276,7 @@
cat(BODYMSGFILE);
cat_head_or_foot(FOOTERFILE, query, subquery);
}
+ free_dbnames();
exit(1);
}