forked from rpms/glibc
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
PURPOSE of /tools/glibc/Regression/bz585674-free-race-in-mcheck-hooks
 | 
						|
Description: Test for bz585674 (free() race in mcheck hooks)
 | 
						|
Author: Petr Muller <pmuller@redhat.com>
 | 
						|
Bug summary: free() race in mcheck hooks
 | 
						|
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=585674
 | 
						|
 | 
						|
Description:
 | 
						|
 | 
						|
Description of problem:
 | 
						|
segfaults can occur with MEMCHECK_ALLOC_=3 enabled.  This was reported and fixed upstream at
 | 
						|
http://sourceware.org/bugzilla/show_bug.cgi?id=10282
 | 
						|
http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=cc49a5a8837be1f9307b167d9bf4399798a847c9
 | 
						|
 | 
						|
Version-Release number of selected component (if applicable):
 | 
						|
glibc-2.5-49
 | 
						|
 | 
						|
How reproducible:
 | 
						|
every time
 | 
						|
 | 
						|
Steps to Reproduce:
 | 
						|
1. cat malloc_test.c
 | 
						|
#include <stdlib.h>
 | 
						|
#include <unistd.h>
 | 
						|
 | 
						|
int main(void)
 | 
						|
{
 | 
						|
#pragma omp parallel num_threads(256)
 | 
						|
 while (1) {
 | 
						|
   void *ptr = malloc(rand() % 65536);
 | 
						|
   usleep((rand() % 100) * 100);
 | 
						|
   free(ptr);
 | 
						|
   usleep((rand() % 100) * 100);
 | 
						|
 }
 | 
						|
 return 0;
 | 
						|
}
 | 
						|
 | 
						|
2. gcc -fopenmp -g -o malloc_check malloc_check.c
 | 
						|
 | 
						|
3. MALLOC_CHECK_=3 ./malloc_test
 | 
						|
  
 | 
						|
Actual results:
 | 
						|
malloc: using debugging hooks
 | 
						|
*** glibc detected *** ./malloc_test: free(): invalid pointer: 0x00000000043e9c90 ***
 | 
						|
 | 
						|
 | 
						|
Expected results:
 | 
						|
no segfaults
 | 
						|
 | 
						|
Additional info:
 |