Index: libcfa/src/interpose.cfa
===================================================================
--- libcfa/src/interpose.cfa	(revision 2d0280038778f9ed36420bed3dbf2979e7c4f4f1)
+++ libcfa/src/interpose.cfa	(revision 8bb46d2a7a3c03f09935c6ab002dd8ed478259f0)
@@ -10,6 +10,6 @@
 // Created On       : Wed Mar 29 16:10:31 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Feb 24 15:31:03 2023
-// Update Count     : 185
+// Last Modified On : Thu Mar  2 13:56:26 2023
+// Update Count     : 191
 //
 
@@ -53,9 +53,10 @@
 
 static generic_fptr_t interpose_symbol( const char symbol[], const char version[] ) {
-	static void * library;
-	static void * pthread_library;
-
+	void * library;
+	#if defined( RTLD_NEXT )
+	library = RTLD_NEXT;
+	#else
+	library = dlopen( "libc.so.6", RTLD_LAZY );
 	if ( ! library ) {
-		library = dlopen( "libc.so.6", RTLD_LAZY );
 		const char * error = dlerror();
 		if ( error ) {
@@ -63,11 +64,5 @@
 		} // if
 	} // if
-	if ( ! pthread_library ) {
-		pthread_library = dlopen( "libpthread.so", RTLD_LAZY );
-		const char * error = dlerror();
-		if ( error ) {
-			abort( "interpose_symbol : failed to open libpthread, %s\n", error );
-		} // if
-	} // if
+	#endif
 
 	return do_interpose_symbol(library, symbol, version);
@@ -108,4 +103,14 @@
 
 		if(__cfathreadabi_interpose_startup) __cfathreadabi_interpose_startup( do_interpose_symbol );
+
+		// SKULLDUGGERY: In Ubuntu 22.04, someone augmented signal.h to allow SIGSTKSZ to be "sysconf(_SC_SIGSTKSZ)" in
+		// sigstksz.h, as well as 8192 in sigstack.h. HOWEVER, they forgot to provide a mechanism to tell signal.h to
+		// use sigstack.h rather than sigstksz.h. (I'm not happy.) By undefining _GNU_SOURCE before signal.h and
+		// redefining it afterwards, you can get 8192, but then nothing works correctly inside of signal.h without
+		// _GNU_SOURCE defined.  So what is needed is a way to get signal.h to use sigstack.h WITH _GNU_SOURCE defined.
+		// Basically something is wrong with features.h and its use in signal.h.
+
+		#undef SIGSTKSZ
+		#define SIGSTKSZ 8192
 
 		// As a precaution (and necessity), errors that result in termination are delivered on a separate stack because
Index: libcfa/src/interpose_thread.cfa
===================================================================
--- libcfa/src/interpose_thread.cfa	(revision 2d0280038778f9ed36420bed3dbf2979e7c4f4f1)
+++ libcfa/src/interpose_thread.cfa	(revision 8bb46d2a7a3c03f09935c6ab002dd8ed478259f0)
@@ -39,7 +39,11 @@
 	const char version[]
 ) libcfa_public {
-	static void * library;
+	void * library;
+	#if defined( RTLD_NEXT )
+	library = RTLD_NEXT;
+	#else
+	// missing RTLD_NEXT => must hard-code library name, assuming libstdc++
+	library = dlopen( "libthread_db.so", RTLD_LAZY );
 	if ( ! library ) {
-		library = dlopen( "libpthread.so", RTLD_LAZY );
 		const char * error = dlerror();
 		if ( error ) {
@@ -47,4 +51,5 @@
 		}
 	} // if
+	#endif // RTLD_NEXT
 
 	return do_interpose_symbol(library, symbol, version);
