[Kazehakase-devel] valgrindでのチェック

Zurück zum Archiv-Index

Hiroyuki Ikezoe poinc****@ikezo*****
2003年 10月 26日 (日) 20:13:54 JST


zoeです。

やっと自分の環境でvalgrindを動かすことができたのでチェックしてみました。
結果、3箇所でエラーが出てました。

1.
Invalid read of size 1
   at 0x400221C2: strcmp (in/usr/lib/valgrind/vgskin_memcheck.so)
    by 0x807D0C0:kz_profile_delete_key (kz-profile.c:823)
   by 0x8075BD2:kz_window_store_state (kz-window.c:893) 
   by 0x807525D:kz_window_delete_event (kz-window.c:683)
    Address 0x424F6884 is0 bytes inside a block of size 33 free'd
   at 0x4002AD0B: free(in /usr/lib/valgrind/vgskin_memcheck.so)
    by 0x407995D3: g_free(in /usr/lib/libglib-2.0.so.0.200.3)
    by 0x807CEBF: kz_profile_list_free (kz-profile.c:754)
    by 0x807D0E3: kz_profile_delete_key (kz-profile.c:829)

パッチ↓
Index: kz-profile.c
===================================================================
RCS file: /cvsroot/kazehakase/kazehakase/src/kz-profile.c,v
retrieving revision 1.2
diff -u -r1.2 kz-profile.c
--- kz-profile.c	7 Sep 2003 05:12:48 -0000	1.2
+++ kz-profile.c	26 Oct 2003 11:06:36 -0000
@@ -828,6 +828,7 @@
 			kz_profile_list_free(p);
 			profile->edit = TRUE;
 			result = TRUE;
+			break;
 		}
 	}
 	return result;

一応これで直るには直ったんですが、なんかいかん気がしてます。
しっかり追えてません…。

2.
22 bytes in 1 blocks are definitely lost in loss record 23 of 131
   at 0x4002AA01: malloc (in/usr/lib/valgrind/vgskin_memcheck.so)
   by 0x40799468: g_malloc(in /usr/lib/libglib-2.0.so.0.200.3)
   by 0x407A6C36: g_strdup(in /usr/lib/libglib-2.0.so.0.200.3)
   by 0x8080C28: kz_xml_node_new (kz-xml.c:380)

パッチ↓
Index: kz-xml.c
===================================================================
RCS file: /cvsroot/kazehakase/kazehakase/src/kz-xml.c,v
retrieving revision 1.3
diff -u -r1.3 kz-xml.c
--- kz-xml.c	25 Oct 2003 20:46:19 -0000	1.3
+++ kz-xml.c	26 Oct 2003 11:06:37 -0000
@@ -355,6 +355,12 @@
 
 		decl = kz_xml_node_new(xml, KZ_XML_NODE_XML_DECL);
 		kz_xml_node_append_child(node, decl);
+		if (xml->encoding && *xml->encoding)
+			decl->content = g_strdup_printf("<?xml version=\"1.0\""
+							" encoding=\"%s\"?>",
+							xml->encoding);
+		else
+			decl->content = g_strdup("<?xml version=\"1.0\"?>");
 
 		space = kz_xml_text_node_new("\n");
 		kz_xml_node_append_child(node, space);
@@ -370,14 +376,6 @@
 		break;
 	}
 	case KZ_XML_NODE_XML_DECL:
-		g_return_val_if_fail(KZ_IS_XML(xml), node);
-
-		if (xml->encoding && *xml->encoding)
-			node->content = g_strdup_printf("<?xml version=\"1.0\""
-						       " encoding=\"%s\"?>",
-						       xml->encoding);
-		else
-			node->content = g_strdup("<?xml version=\"1.0\"?>");
 		break;
 	case KZ_XML_NODE_TEXT:
 	case KZ_XML_NODE_COMMENT:

これはこれで直ってると思います(コード的にはともかく)。

3.
40 bytes in 2 blocks are definitely lost in loss record 37 of 131
   at 0x4002AF09: calloc (in /usr/lib/valgrind/vgskin_memcheck.so)
   by 0x407994E0: g_malloc0 (in /usr/lib/libglib-2.0.so.0.200.3)
   by 0x8080ACB: kz_xml_node_new (kz-xml.c:340)
   by 0x8080B32: kz_xml_node_new(kz-xml.c:356)

これはまだ追えてません。

2だけコミットしておきました。
3はとりあえづバグトラックに放りこんでおきます。



Kazehakase-devel メーリングリストの案内
Zurück zum Archiv-Index