calls of g_slice_new in different threads return the same address?



 Hi,
 I am using  g_slice_new to alloc some memory in my work, and it seems that sometimes same 
 address would be returned if g_slice_new in different threads are called at the same time,  I'm  
 wondering if anyone has ever encountered this problem? or it's already a known bug?  because
 i am using the glib2-2.12.3, it's really a bit old now.

 i write a test program to create three threads to keep alloc and free mems using g_slice_new and 
 g_slice_free respectively,  i will put the allocated mem in a hash table, so everytime after calls to 
 g_slice_new, i check if it's in the hash table , and it turns out that it does happen. and if i set    
G_SLICE=always_malloc  before i run the test program, there will be no problem.  any advice will
 be appreciated.

 Attached is my test program, i copy some codes from ghash.c so that it can be compiled only with 
 gcc -o gslice_test gslice_test.c -lglib-2.0 -I/usr/include/glib-2.0/ -I/usr/lib64/glib-2.0/include/ -pthread 
-g

 Here is my enviroment:
 os:  Linux 183 2.6.18-128.el5 #1 SMP Wed Jan 21 10:41:14 EST 2009 x86_64 x86_64 x86_64 GNU/Linux
                (old enough too)
 glib version: 
  glib2-debuginfo-2.12.3-2.el5.centos
  glib2-2.12.3-2.fc6
  glib2-2.12.3-2.fc6
  glib2-devel-2.12.3-2.fc6
  glib2-devel-2.12.3-2.fc6


Attachment: gslice_test.c
Description: Binary data



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]