Index: uspace/app/tester/mm/common.c
===================================================================
--- uspace/app/tester/mm/common.c	(revision 38c773e7cd9604dabae0c05d93cd73fb1178ce82)
+++ uspace/app/tester/mm/common.c	(revision 1b3e8549153c45754eeae954067e77cd51aca026)
@@ -135,4 +135,16 @@
 }
 
+static void check_consistency(const char *loc)
+{
+	/* Check heap consistency */
+	void *prob = heap_check();
+	if (prob != NULL) {
+		TPRINTF("\nError: Heap inconsistency at %p in %s.\n",
+		    prob, loc);
+		TSTACKTRACE();
+		error_flag = true;
+	}
+}
+
 /** Checked malloc
  *
@@ -153,4 +165,5 @@
 	/* Allocate the chunk of memory */
 	data = malloc(size);
+	check_consistency("checked_malloc");
 	if (data == NULL)
 		return NULL;
@@ -160,4 +173,5 @@
 		TPRINTF("\nError: Allocated block overlaps with another "
 		    "previously allocated block.\n");
+		TSTACKTRACE();
 		error_flag = true;
 	}
@@ -198,4 +212,5 @@
 	if (block->addr == NULL) {
 		free(block);
+		check_consistency("alloc_block");
 		return NULL;
 	}
@@ -228,5 +243,7 @@
 	/* Free the memory */
 	free(block->addr);
+	check_consistency("free_block (a)");
 	free(block);
+	check_consistency("free_block (b)");
 }
 
@@ -257,4 +274,6 @@
 	    pos < end; pos++)
 		*pos = block_expected_value(block, pos);
+	
+	check_consistency("fill_block");
 }
 
@@ -273,4 +292,5 @@
 		if (*pos != block_expected_value(block, pos)) {
 			TPRINTF("\nError: Corrupted content of a data block.\n");
+			TSTACKTRACE();
 			error_flag = true;
 			return;
@@ -296,4 +316,5 @@
 	if (entry == NULL) {
 		TPRINTF("\nError: Corrupted list of allocated memory blocks.\n");
+		TSTACKTRACE();
 		error_flag = true;
 	}
@@ -325,4 +346,5 @@
 	if (addr == NULL) {
 		free(area);
+		check_consistency("map_area (a)");
 		return NULL;
 	}
@@ -331,4 +353,5 @@
 	if (area->addr == (void *) -1) {
 		free(area);
+		check_consistency("map_area (b)");
 		return NULL;
 	}
@@ -361,4 +384,5 @@
 	
 	free(area);
+	check_consistency("unmap_area");
 }
 
@@ -389,3 +413,5 @@
 	    pos < end; pos++)
 		*pos = area_expected_value(area, pos);
-}
+	
+	check_consistency("fill_area");
+}
Index: uspace/app/tester/mm/malloc3.c
===================================================================
--- uspace/app/tester/mm/malloc3.c	(revision 38c773e7cd9604dabae0c05d93cd73fb1178ce82)
+++ uspace/app/tester/mm/malloc3.c	(revision 1b3e8549153c45754eeae954067e77cd51aca026)
@@ -236,4 +236,5 @@
 					mem_area_t *area = map_area(AREA_SIZE);
 					RETURN_IF_ERROR;
+					
 					if (area != NULL) {
 						TPRINTF("*");
Index: uspace/app/tester/tester.h
===================================================================
--- uspace/app/tester/tester.h	(revision 38c773e7cd9604dabae0c05d93cd73fb1178ce82)
+++ uspace/app/tester/tester.h	(revision 1b3e8549153c45754eeae954067e77cd51aca026)
@@ -38,4 +38,5 @@
 #include <sys/types.h>
 #include <bool.h>
+#include <stacktrace.h>
 
 #define IPC_TEST_SERVICE  10240
@@ -59,4 +60,11 @@
 		if (!test_quiet) { \
 			fprintf(stderr, (format), ##__VA_ARGS__); \
+		} \
+	} while (0)
+
+#define TSTACKTRACE() \
+	do { \
+		if (!test_quiet) { \
+			stacktrace_print(); \
 		} \
 	} while (0)
