Index: tools/Makefile.am
===================================================================
--- tools/Makefile.am	(revision 566b74f30cbffd7534d18835ce6998cc9baef525)
+++ tools/Makefile.am	(revision 2c39855bddf43ce2f61ae044cbfd41671259ed85)
@@ -18,6 +18,8 @@
 CFLAGS = -Wall -Wextra -O2 -g
 
-noinst_PROGRAMS = catchsig repeat
+noinst_PROGRAMS = busy catchsig repeat
 
+busy_SOURCES     = busy.c
+busy_LDFLAGS     = -pthread
 catchsig_SOURCES = catchsig.c
 repeat_SOURCES   = repeat.c
Index: tools/Makefile.in
===================================================================
--- tools/Makefile.in	(revision 566b74f30cbffd7534d18835ce6998cc9baef525)
+++ tools/Makefile.in	(revision 2c39855bddf43ce2f61ae044cbfd41671259ed85)
@@ -92,5 +92,5 @@
 build_triplet = @build@
 host_triplet = @host@
-noinst_PROGRAMS = catchsig$(EXEEXT) repeat$(EXEEXT)
+noinst_PROGRAMS = busy$(EXEEXT) catchsig$(EXEEXT) repeat$(EXEEXT)
 subdir = tools
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -104,4 +104,9 @@
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
+am_busy_OBJECTS = busy.$(OBJEXT)
+busy_OBJECTS = $(am_busy_OBJECTS)
+busy_LDADD = $(LDADD)
+busy_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(busy_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am_catchsig_OBJECTS = catchsig.$(OBJEXT)
 catchsig_OBJECTS = $(am_catchsig_OBJECTS)
@@ -138,6 +143,6 @@
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(catchsig_SOURCES) $(repeat_SOURCES)
-DIST_SOURCES = $(catchsig_SOURCES) $(repeat_SOURCES)
+SOURCES = $(busy_SOURCES) $(catchsig_SOURCES) $(repeat_SOURCES)
+DIST_SOURCES = $(busy_SOURCES) $(catchsig_SOURCES) $(repeat_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
@@ -286,4 +291,6 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+busy_SOURCES = busy.c
+busy_LDFLAGS = -pthread
 catchsig_SOURCES = catchsig.c
 repeat_SOURCES = repeat.c
@@ -325,4 +332,8 @@
 	-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
 
+busy$(EXEEXT): $(busy_OBJECTS) $(busy_DEPENDENCIES) $(EXTRA_busy_DEPENDENCIES) 
+	@rm -f busy$(EXEEXT)
+	$(AM_V_CCLD)$(busy_LINK) $(busy_OBJECTS) $(busy_LDADD) $(LIBS)
+
 catchsig$(EXEEXT): $(catchsig_OBJECTS) $(catchsig_DEPENDENCIES) $(EXTRA_catchsig_DEPENDENCIES) 
 	@rm -f catchsig$(EXEEXT)
@@ -339,4 +350,5 @@
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/busy.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/catchsig.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/repeat.Po@am__quote@
Index: tools/busy.c
===================================================================
--- tools/busy.c	(revision 2c39855bddf43ce2f61ae044cbfd41671259ed85)
+++ tools/busy.c	(revision 2c39855bddf43ce2f61ae044cbfd41671259ed85)
@@ -0,0 +1,44 @@
+#include <stdbool.h>
+#include <stdlib.h>
+#include <pthread.h>
+
+struct S {
+	int i, j, k, l, m, n;
+};
+
+void * CallingMalloc( void * arg __attribute__((unused)) ) {
+	for ( volatile int i = 0; i < 10000; i += 1 ) {
+		volatile int      * ip  = (volatile int      *)malloc( sizeof(   int  ) *   1 );
+		volatile int      * aip = (volatile int      *)malloc( sizeof(   int  ) * 100 );
+		volatile struct S * sp  = (volatile struct S *)malloc( sizeof(struct S) * 200 );
+
+		sp->i = 0;
+		sp->j = 1;
+		sp->k = 2;
+		sp->l = 3;
+		sp->m = 4;
+		sp->n = 5;
+		for(int j = 0; j < 100; j++) {
+			aip[j] = j;
+		}
+		*ip = i;
+
+		free( (void*)sp );
+		free( (void*)aip );
+		free( (void*)ip );
+	}
+	return NULL;
+}
+
+int main() {
+    while(true) {
+	    pthread_t t[15];
+	    for(int i = 0; i < 15; i++) {
+		    pthread_create( &t[i], NULL, CallingMalloc, NULL );
+	    }
+
+	    for(int i = 0; i < 15; i++) {
+		    pthread_join( t[i], NULL );
+	    }
+    }
+}
