Re: Memory leaks in RRDtool 1.3.x and 1.4.x?

Tobias Oetiker <[email protected]>
Newsgroups gmane.comp.db.rrdtool.devel
Message-ID <[email protected]>
Hi Till,

Yesterday Till Dörges wrote:

> Hello,
>
> we're currently using RRDtool for a long-running daemon. With RRDtool 1.2.x
> (currently x=30) everything is fine. :-)
>
> As soon as we try 1.3.x or 1.4.x the daemon starts leaking memory, though. The
> suspect seems to be described here:
>
>   http://oss.oetiker.ch/rrdtool-trac/ticket/208
>
> Since this issue prevents us from updating, I was wondering what the current status
> of this ticket is.

hmmm pango is so twisted ... have a look at r2117 I think this
should look a lot better ... at least the 'loss' does not change
between running graph 100 or 300 times ...

I applied the patch in trunk, 1.4 and 1.3

cheers
tobi

Index: rrd_graph.c
===================================================================
--- rrd_graph.c (revision 2100)
+++ rrd_graph.c (working copy)
@@ -325,6 +325,12 @@
         free(im->gdes[i].rpnp);
     }
     free(im->gdes);
+
+    for (i = 0; i < DIM(text_prop);i++){
+        pango_font_description_free(im->text_prop[i].font_desc);
+        im->text_prop[i].font_desc = NULL;
+    }
+
     if (im->font_options)
         cairo_font_options_destroy(im->font_options);

@@ -332,6 +338,8 @@
         status = cairo_status(im->cr);
         cairo_destroy(im->cr);
     }
+
+
     if (im->rendered_image) {
         free(im->rendered_image);
     }
@@ -3781,6 +3789,8 @@
     if (font){
         strncpy(im->text_prop[prop].font, font, sizeof(text_prop[prop].font) - 1);
         im->text_prop[prop].font[sizeof(text_prop[prop].font) - 1] = '\0';
+        /* if we already got one, drop it first */
+        pango_font_description_free(im->text_prop[prop].font_desc);
         im->text_prop[prop].font_desc = pango_font_description_from_string( font );
     };
     if (size > 0){
@@ -3864,6 +3874,7 @@

     for (i = 0; i < DIM(text_prop); i++) {
         im->text_prop[i].size = -1;
+        im->text_prop[i].font_desc = NULL;
         rrd_set_font_desc(im,i, deffont ? deffont : text_prop[i].font,text_prop[i].size);
     }

@@ -3878,6 +3889,7 @@
     pango_cairo_update_context(im->cr,context);

     im->layout = pango_layout_new(context);
+    g_object_unref (context);

 //  im->layout = pango_cairo_create_layout(im->cr);



-- 
Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
http://it.oetiker.ch [email protected] ++41 62 775 9902 / sb: -9900

_______________________________________________
rrd-developers mailing list
[email protected]
https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.