Index: libcfa/src/interpose.cfa
===================================================================
--- libcfa/src/interpose.cfa	(revision 190224d799f51dee42e64be56d3b0734ff2be853)
+++ libcfa/src/interpose.cfa	(revision d870df3b27c7996192b57c629fc31c1a72209f79)
@@ -10,6 +10,6 @@
 // Created On       : Wed Mar 29 16:10:31 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Feb 17 10:18:53 2020
-// Update Count     : 166
+// Last Modified On : Mon Mar  2 17:37:00 2020
+// Update Count     : 176
 //
 
@@ -143,4 +143,5 @@
 void abort( const char fmt[], ... ) __attribute__(( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
 void abort( bool signalAbort, const char fmt[], ... ) __attribute__(( format(printf, 2, 3), __nothrow__, __leaf__, __noreturn__ ));
+void __abort( bool signalAbort, const char fmt[], va_list args ) __attribute__(( __nothrow__, __leaf__, __noreturn__ ));
 
 extern "C" {
@@ -152,5 +153,5 @@
 		va_list argp;
 		va_start( argp, fmt );
-		abort( false, fmt, argp );
+		__abort( false, fmt, argp );
 		va_end( argp );
 	}
@@ -218,5 +219,6 @@
 }
 
-void abort( bool signalAbort, const char fmt[], ... ) {
+// Cannot forward va_list.
+void __abort( bool signalAbort, const char fmt[], va_list args ) {
 	void * kernel_data = kernel_abort();				// must be done here to lock down kernel
 	int len;
@@ -228,9 +230,5 @@
 
 	assert( fmt );
-	va_list args;
-	va_start( args, fmt );
-
 	len = vsnprintf( abort_text, abort_text_size, fmt, args );
-	va_end( args );
 	__cfaabi_bits_write( STDERR_FILENO, abort_text, len );
 
@@ -248,6 +246,15 @@
 	va_list args;
 	va_start( args, fmt );
-	abort( false, fmt, args );
+	__abort( false, fmt, args );
+    // CONTROL NEVER REACHES HERE!
 	va_end( args );
+}
+
+void abort( bool signalAbort, const char fmt[], ... ) {
+    va_list args;
+    va_start( args, fmt );
+    __abort( signalAbort, fmt, args );
+    // CONTROL NEVER REACHES HERE!
+    va_end( args );
 }
 
