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