Fixed mutex deadlock.
authorSebastian Wilhelmi <wilhelmi@ira.uka.de>
Fri, 18 May 2001 08:36:44 +0000 (08:36 +0000)
committerSebastian Wilhelmi <wilhelmi@src.gnome.org>
Fri, 18 May 2001 08:36:44 +0000 (08:36 +0000)
2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

* gmem.c (g_mem_profile): Fixed mutex deadlock.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
glib/gmem.c
gmem.c

index be08eed..a4922ba 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gmem.c (g_mem_profile): Fixed mutex deadlock.
+
 2001-05-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * makefile.mingw.in: Add gpattern.o to objects.
index be08eed..a4922ba 100644 (file)
@@ -1,3 +1,7 @@
+2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gmem.c (g_mem_profile): Fixed mutex deadlock.
+
 2001-05-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * makefile.mingw.in: Add gpattern.o to objects.
index be08eed..a4922ba 100644 (file)
@@ -1,3 +1,7 @@
+2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gmem.c (g_mem_profile): Fixed mutex deadlock.
+
 2001-05-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * makefile.mingw.in: Add gpattern.o to objects.
index be08eed..a4922ba 100644 (file)
@@ -1,3 +1,7 @@
+2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gmem.c (g_mem_profile): Fixed mutex deadlock.
+
 2001-05-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * makefile.mingw.in: Add gpattern.o to objects.
index be08eed..a4922ba 100644 (file)
@@ -1,3 +1,7 @@
+2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gmem.c (g_mem_profile): Fixed mutex deadlock.
+
 2001-05-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * makefile.mingw.in: Add gpattern.o to objects.
index be08eed..a4922ba 100644 (file)
@@ -1,3 +1,7 @@
+2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gmem.c (g_mem_profile): Fixed mutex deadlock.
+
 2001-05-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * makefile.mingw.in: Add gpattern.o to objects.
index be08eed..a4922ba 100644 (file)
@@ -1,3 +1,7 @@
+2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gmem.c (g_mem_profile): Fixed mutex deadlock.
+
 2001-05-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * makefile.mingw.in: Add gpattern.o to objects.
index be08eed..a4922ba 100644 (file)
@@ -1,3 +1,7 @@
+2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * gmem.c (g_mem_profile): Fixed mutex deadlock.
+
 2001-05-17  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * makefile.mingw.in: Add gpattern.o to objects.
index 805f6bd..616614b 100644 (file)
@@ -363,22 +363,31 @@ void
 g_mem_profile (void)
 {
   guint local_data[(MEM_PROFILE_TABLE_SIZE + 1) * 8 * sizeof (profile_data[0])];
-  gulong local_allocs = profile_allocs;
-  gulong local_zinit = profile_zinit;
-  gulong local_frees = profile_frees;
-  gulong local_mc_allocs = profile_mc_allocs;
-  gulong local_mc_frees = profile_mc_frees;
+  gulong local_allocs;
+  gulong local_zinit;
+  gulong local_frees;
+  gulong local_mc_allocs;
+  gulong local_mc_frees;
 
   g_mutex_lock (g_profile_mutex);
 
+  local_allocs = profile_allocs;
+  local_zinit = profile_zinit;
+  local_frees = profile_frees;
+  local_mc_allocs = profile_mc_allocs;
+  local_mc_frees = profile_mc_frees;
+
   if (!profile_data)
     {
       g_mutex_unlock (g_profile_mutex);
       return;
     }
 
-  memcpy (local_data, profile_data, (MEM_PROFILE_TABLE_SIZE + 1) * 8 * sizeof (profile_data[0]));
+  memcpy (local_data, profile_data, 
+         (MEM_PROFILE_TABLE_SIZE + 1) * 8 * sizeof (profile_data[0]));
   
+  g_mutex_unlock (g_profile_mutex);
+
   g_print ("GLib Memory statistics (successful operations):\n");
   profile_print_locked (local_data, TRUE);
   g_print ("GLib Memory statistics (failing operations):\n");
@@ -395,7 +404,6 @@ g_mem_profile (void)
           local_mc_frees,
           ((gdouble) local_mc_frees) / local_mc_allocs * 100.0,
           local_mc_allocs - local_mc_frees);
-  g_mutex_unlock (g_profile_mutex);
 }
 
 static gpointer
diff --git a/gmem.c b/gmem.c
index 805f6bd..616614b 100644 (file)
--- a/gmem.c
+++ b/gmem.c
@@ -363,22 +363,31 @@ void
 g_mem_profile (void)
 {
   guint local_data[(MEM_PROFILE_TABLE_SIZE + 1) * 8 * sizeof (profile_data[0])];
-  gulong local_allocs = profile_allocs;
-  gulong local_zinit = profile_zinit;
-  gulong local_frees = profile_frees;
-  gulong local_mc_allocs = profile_mc_allocs;
-  gulong local_mc_frees = profile_mc_frees;
+  gulong local_allocs;
+  gulong local_zinit;
+  gulong local_frees;
+  gulong local_mc_allocs;
+  gulong local_mc_frees;
 
   g_mutex_lock (g_profile_mutex);
 
+  local_allocs = profile_allocs;
+  local_zinit = profile_zinit;
+  local_frees = profile_frees;
+  local_mc_allocs = profile_mc_allocs;
+  local_mc_frees = profile_mc_frees;
+
   if (!profile_data)
     {
       g_mutex_unlock (g_profile_mutex);
       return;
     }
 
-  memcpy (local_data, profile_data, (MEM_PROFILE_TABLE_SIZE + 1) * 8 * sizeof (profile_data[0]));
+  memcpy (local_data, profile_data, 
+         (MEM_PROFILE_TABLE_SIZE + 1) * 8 * sizeof (profile_data[0]));
   
+  g_mutex_unlock (g_profile_mutex);
+
   g_print ("GLib Memory statistics (successful operations):\n");
   profile_print_locked (local_data, TRUE);
   g_print ("GLib Memory statistics (failing operations):\n");
@@ -395,7 +404,6 @@ g_mem_profile (void)
           local_mc_frees,
           ((gdouble) local_mc_frees) / local_mc_allocs * 100.0,
           local_mc_allocs - local_mc_frees);
-  g_mutex_unlock (g_profile_mutex);
 }
 
 static gpointer