Index: libcfa/src/exception.c
===================================================================
--- libcfa/src/exception.c	(revision c40157ec46899c5e6a8afa9d8f9f0dba822d528f)
+++ libcfa/src/exception.c	(revision 142930b11bb7a219dee95933e7dd70643b471d38)
@@ -55,7 +55,4 @@
 }
 
-struct __cfaehm_base_exception_t * __cfaehm_get_current_exception(void) {
-	return this_exception_context()->current_exception;
-}
 
 // RESUMPTION ================================================================
@@ -312,5 +309,5 @@
 		struct _Unwind_Context * unwind_context)
 {
-	//__cfadbg_print_safe(exception, "CFA: 0x%lx\n", _Unwind_GetCFA(context));
+	//! __cfadbg_print_safe(exception, "CFA: 0x%lx\n", _Unwind_GetCFA(unwind_context));
 	__cfadbg_print_safe(exception, "Personality function (%d, %x, %llu, %p, %p):",
 			version, actions, exception_class, unwind_exception, unwind_context);
@@ -482,9 +479,9 @@
 // and simply linked from libcfa but there is one problem left, see the exception table for details
 __attribute__((noinline))
-int __cfaehm_try_terminate(void (*try_block)(),
-		__attribute__((unused)) void (*catch_block)(int index, exception_t * except),
+void __cfaehm_try_terminate(void (*try_block)(),
+		void (*catch_block)(int index, exception_t * except),
 		__attribute__((unused)) int (*match_block)(exception_t * except)) {
 	//! volatile int xy = 0;
-	//! printf("%p %p %p\n", &try_block, &match_block, &xy);
+	//! printf("%p %p %p %p\n", &try_block, &catch_block, &match_block, &xy);
 
 	// Setup the personality routine and exception table.
@@ -510,5 +507,5 @@
 
 	// Normal return for when there is no throw.
-	return 0;
+	return;
 
 	// Exceptionnal path
@@ -521,5 +518,8 @@
 	asm volatile (".CATCH:");
 
-	return EXCEPT_TO_NODE( this_exception_context()->current_exception )->handler_index;
+	// Exception handler
+	// Note: Saving the exception context on the stack breaks termination exceptions.
+	catch_block( EXCEPT_TO_NODE( this_exception_context()->current_exception )->handler_index,
+	             this_exception_context()->current_exception );
 }
 
Index: libcfa/src/exception.h
===================================================================
--- libcfa/src/exception.h	(revision c40157ec46899c5e6a8afa9d8f9f0dba822d528f)
+++ libcfa/src/exception.h	(revision 142930b11bb7a219dee95933e7dd70643b471d38)
@@ -43,5 +43,4 @@
 extern struct __cfavir_type_info __cfatid_exception_t;
 
-struct __cfaehm_base_exception_t * __cfaehm_get_current_exception(void);
 
 void __cfaehm_cancel_stack(exception_t * except) __attribute__((noreturn));
@@ -58,5 +57,5 @@
 
 // Function catches termination exceptions.
-int __cfaehm_try_terminate(
+void __cfaehm_try_terminate(
 	void (*try_block)(),
 	void (*catch_block)(int index, exception_t * except),
