I've narrowed down this memory leak to gtk and sent a message to their mailing list to see if I get a good reply. It looks like the bug relates to asynchronous X11 calls and this memory is not being freed. Running with dbx using 'check -memuse' shows the info below, this may or may not be related to the heap growing but it is certainly odd that so much memory is being allocated by this particular function call. Truss also reports 8 continuous brk system calls per iteration. Total % of Num of Avg Allocation call stack Size All Blocks Size ========== ==== ====== ====== ======================================= 10222888 69% 98297 104 _XEnq < _XReply The following C code exhibits the continuous growth of the heap. #include int main( int argc, char *argv[] ) { /* GtkWidget is the storage type for widgets */ GtkWidget *window; GtkWidget *event_box; /* This is called in all GTK applications. Arguments are parsed * from the command line and are returned to the application. */ gtk_init (&argc, &argv); /* create a new window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_object_ref ((GObject*)window); gtk_object_sink ((GtkObject*)window); event_box = gtk_event_box_new (); g_object_ref ((GObject*)event_box); gtk_object_sink ((GtkObject*)event_box); gtk_widget_show (window); for (int i = 0; i < 100000; i++) { gtk_container_add ((GtkContainer*) window, event_box); gtk_container_remove ((GtkContainer*) window, event_box); } return 0; }