Index: kernel/generic/src/ipc/sysipc.c
===================================================================
--- kernel/generic/src/ipc/sysipc.c	(revision 384c4886e4ae3a6c323a34e23d7f8a36553a0910)
+++ kernel/generic/src/ipc/sysipc.c	(revision 741fd168039c63304d28851d0bfb573bd41fec74)
@@ -456,8 +456,15 @@
 
 	if (!(res = request_preprocess(&call, phone))) {
+#ifdef CONFIG_UDEBUG
+		udebug_stoppable_begin();
+#endif
 		rc = ipc_call_sync(phone, &call);
+#ifdef CONFIG_UDEBUG
+		udebug_stoppable_end();
+#endif
 		if (rc != EOK)
 			return rc;
 		process_answer(&call);
+
 	} else {
 		IPC_SET_RETVAL(call.data, res);
@@ -496,5 +503,11 @@
 
 	if (!(res = request_preprocess(&call, phone))) {
+#ifdef CONFIG_UDEBUG
+		udebug_stoppable_begin();
+#endif
 		rc = ipc_call_sync(phone, &call);
+#ifdef CONFIG_UDEBUG
+		udebug_stoppable_end();
+#endif
 		if (rc != EOK)
 			return rc;
@@ -799,7 +812,15 @@
 	call_t *call;
 
-restart:	
+restart:
+
+#ifdef CONFIG_UDEBUG
+	udebug_stoppable_begin();
+#endif	
 	call = ipc_wait_for_call(&TASK->answerbox, usec,
 	    flags | SYNCH_FLAGS_INTERRUPTIBLE);
+
+#ifdef CONFIG_UDEBUG
+	udebug_stoppable_end();
+#endif
 	if (!call)
 		return 0;
Index: kernel/generic/src/synch/futex.c
===================================================================
--- kernel/generic/src/synch/futex.c	(revision 384c4886e4ae3a6c323a34e23d7f8a36553a0910)
+++ kernel/generic/src/synch/futex.c	(revision 741fd168039c63304d28851d0bfb573bd41fec74)
@@ -116,4 +116,5 @@
 	pte_t *t;
 	ipl_t ipl;
+	int rc;
 	
 	ipl = interrupts_disable();
@@ -135,7 +136,15 @@
 
 	futex = futex_find(paddr);
-	
-	return (unative_t) waitq_sleep_timeout(&futex->wq, usec, flags |
+
+#ifdef CONFIG_UDEBUG
+	udebug_stoppable_begin();
+#endif
+	rc = waitq_sleep_timeout(&futex->wq, usec, flags |
 	    SYNCH_FLAGS_INTERRUPTIBLE);
+
+#ifdef CONFIG_UDEBUG
+	udebug_stoppable_end();
+#endif
+	return (unative_t) rc;
 }
 
Index: kernel/generic/src/syscall/syscall.c
===================================================================
--- kernel/generic/src/syscall/syscall.c	(revision 384c4886e4ae3a6c323a34e23d7f8a36553a0910)
+++ kernel/generic/src/syscall/syscall.c	(revision 741fd168039c63304d28851d0bfb573bd41fec74)
@@ -106,9 +106,5 @@
 	udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, 0, false);
 #endif
-
 	if (id < SYSCALL_END) {	
-#ifdef CONFIG_UDEBUG
-		udebug_stoppable_begin();
-#endif
 		rc = syscall_table[id](a1, a2, a3, a4, a5, a6);
 	} else {
@@ -123,7 +119,5 @@
 #ifdef CONFIG_UDEBUG
 	udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, rc, true);
-	udebug_stoppable_end();
-#endif
-	
+#endif	
 	return rc;
 }
Index: kernel/generic/src/udebug/udebug_ops.c
===================================================================
--- kernel/generic/src/udebug/udebug_ops.c	(revision 384c4886e4ae3a6c323a34e23d7f8a36553a0910)
+++ kernel/generic/src/udebug/udebug_ops.c	(revision 741fd168039c63304d28851d0bfb573bd41fec74)
@@ -318,5 +318,4 @@
 
 	LOG("udebug_stop()\n");
-	mutex_lock(&TASK->udebug.lock);
 
 	/*
@@ -355,4 +354,5 @@
 	_thread_op_end(t);
 
+	mutex_lock(&TASK->udebug.lock);
 	ipc_answer(&TASK->answerbox, call);
 	mutex_unlock(&TASK->udebug.lock);
Index: uspace/app/trace/trace.c
===================================================================
--- uspace/app/trace/trace.c	(revision 384c4886e4ae3a6c323a34e23d7f8a36553a0910)
+++ uspace/app/trace/trace.c	(revision 741fd168039c63304d28851d0bfb573bd41fec74)
@@ -450,4 +450,14 @@
 	while (!abort_trace) {
 
+		if (paused) {
+			printf("Waiting for resume\n");
+			while (paused) {
+				usleep(1000000);
+				fibril_yield();
+				printf(".");
+			}
+			printf("Resumed\n");
+		}
+
 		/* Run thread until an event occurs */
 		rc = udebug_go(phoneid, thread_hash,
@@ -470,11 +480,4 @@
 			case UDEBUG_EVENT_STOP:
 				printf("Stop event\n");
-				printf("Waiting for resume\n");
-				while (paused) {
-					usleep(1000000);
-					fibril_yield();
-					printf(".");
-				}
-				printf("Resumed\n");
 				break;
 			case UDEBUG_EVENT_THREAD_B:
@@ -581,4 +584,5 @@
 		if (c == 'q') break;
 		if (c == 'p') {
+			printf("Pause...\n");
 			paused = 1;
 			rc = udebug_stop(phoneid, thash);
@@ -587,4 +591,5 @@
 		if (c == 'r') {
 			paused = 0;
+			printf("Resume...\n");
 		}
 	}
