Re: another memory leak

2008-10-31 Thread Yu Feng
On Wed, 2008-10-29 at 22:08 -0400, Jacques Le Normand wrote:
 Hello list,
 thank you for helping me to solve my previous post, which found that I
 had a memory leak. The solution was to remove uim (universal input
 method).

Would you say more about the solution in the list? I am also interested
in it but don't know why there is a leak.


 I have a new memory leak problem. This one creates and removes 2000
 text entries every 100ms. I've had top showing 64 megs resident after
 5 minutes (and no sign of stopping).
 If anyone could run the code to see if they get a memory leak (and
 post the result) it would be great!
 If anyone could shed some light on the problem, even better!
 cheers
 --Jacques
 
 (and now the code...)
 
 #include stdio.h
 #include stdlib.h
 #include gtk/gtk.h
 
 
 GtkWidget *entry;
 GtkWidget *vbox;
 
 guint test_function(gpointer data){
   GList *iter;
   GList *original_iter;
   iter = original_iter = gtk_container_get_children (GTK_CONTAINER
 (vbox));
   while(iter){
 GtkWidget *child;
 child = iter-data;
 iter  = iter-next;
 gtk_container_remove(GTK_CONTAINER(vbox),child);
 
 
   }
   g_list_free(original_iter);
   int i;
   for( i = 0 ; i  2000 ; i++){
 entry = gtk_entry_new ();
 gtk_box_pack_start (GTK_BOX (vbox), entry, TRUE, TRUE, 0);
 gtk_widget_show (entry); 
   }
   return 1;
 }
 
 int main( int   argc,
   char *argv[] )
 {
   int time_interval = 100;
 GtkWidget *window;
 gtk_init (argc, argv);
 
 /* create a new window */
 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 gtk_widget_set_size_request (GTK_WIDGET (window), 200, 100);
 gtk_window_set_title (GTK_WINDOW (window), GTK Entry);
 g_signal_connect (G_OBJECT (window), destroy,
   G_CALLBACK (gtk_main_quit), NULL);
 g_signal_connect_swapped (G_OBJECT (window), delete_event,
   G_CALLBACK (gtk_widget_destroy), 
   G_OBJECT (window));
 
 vbox = gtk_vbox_new (FALSE, 0);
 gtk_container_add (GTK_CONTAINER (window), vbox);
 gtk_widget_show (vbox); 
 
  
 g_timeout_add(time_interval,(GSourceFunc) test_function,0);
   
 gtk_widget_show (window);
 
 gtk_main();
 
 return 0;
 }
 
 ___
 gtk-devel-list mailing list
 [EMAIL PROTECTED]
 http://mail.gnome.org/mailman/listinfo/gtk-devel-list

___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: another memory leak

2008-10-31 Thread Jacques Le Normand
the solution is currently being discussed here:
http://groups.google.com/group/uim-en/browse_thread/thread/8ff1adf19bc40fd3

On Thu, Oct 30, 2008 at 2:36 PM, Yu Feng [EMAIL PROTECTED] wrote:

 On Wed, 2008-10-29 at 22:08 -0400, Jacques Le Normand wrote:
  Hello list,
  thank you for helping me to solve my previous post, which found that I
  had a memory leak. The solution was to remove uim (universal input
  method).

 Would you say more about the solution in the list? I am also interested
 in it but don't know why there is a leak.


  I have a new memory leak problem. This one creates and removes 2000
  text entries every 100ms. I've had top showing 64 megs resident after
  5 minutes (and no sign of stopping).
  If anyone could run the code to see if they get a memory leak (and
  post the result) it would be great!
  If anyone could shed some light on the problem, even better!
  cheers
  --Jacques
 
  (and now the code...)
 
  #include stdio.h
  #include stdlib.h
  #include gtk/gtk.h
 
 
  GtkWidget *entry;
  GtkWidget *vbox;
 
  guint test_function(gpointer data){
GList *iter;
GList *original_iter;
iter = original_iter = gtk_container_get_children (GTK_CONTAINER
  (vbox));
while(iter){
  GtkWidget *child;
  child = iter-data;
  iter  = iter-next;
  gtk_container_remove(GTK_CONTAINER(vbox),child);
 
 
}
g_list_free(original_iter);
int i;
for( i = 0 ; i  2000 ; i++){
  entry = gtk_entry_new ();
  gtk_box_pack_start (GTK_BOX (vbox), entry, TRUE, TRUE, 0);
  gtk_widget_show (entry);
}
return 1;
  }
 
  int main( int   argc,
char *argv[] )
  {
int time_interval = 100;
  GtkWidget *window;
  gtk_init (argc, argv);
 
  /* create a new window */
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_size_request (GTK_WIDGET (window), 200, 100);
  gtk_window_set_title (GTK_WINDOW (window), GTK Entry);
  g_signal_connect (G_OBJECT (window), destroy,
G_CALLBACK (gtk_main_quit), NULL);
  g_signal_connect_swapped (G_OBJECT (window), delete_event,
G_CALLBACK (gtk_widget_destroy),
G_OBJECT (window));
 
  vbox = gtk_vbox_new (FALSE, 0);
  gtk_container_add (GTK_CONTAINER (window), vbox);
  gtk_widget_show (vbox);
 
 
  g_timeout_add(time_interval,(GSourceFunc) test_function,0);
 
  gtk_widget_show (window);
 
  gtk_main();
 
  return 0;
  }
 
  ___
  gtk-devel-list mailing list
  [EMAIL PROTECTED]
  http://mail.gnome.org/mailman/listinfo/gtk-devel-list


___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: another memory leak

2008-10-31 Thread Allin Cottrell
On Fri, 31 Oct 2008, Alexander Semenov wrote:

 Jacques Le Normand wrote:
  thank you for helping me to solve my previous post, which 
  found that I had a memory leak. The solution was to remove uim 
  (universal input method). I have a new memory leak problem. 
  This one creates and removes 2000 text entries every 100ms. 
  I've had top showing 64 megs resident after 5 minutes (and no 
  sign of stopping).
  If anyone could run the code to see if they get a memory leak 
  (and post the result) it would be great! ...

 I've tried this and I had the same results.

top is not a leak detector.  valgrind, which is what you should 
be using, shows no leak on GTK's part in this example.

Allin Cottrell
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list