Use RTLD_DEEPBIND by default if supported. Should really be done with a new function and a caller-specified flag but that got vetoed upstream, and DEEPBIND is a good default. --- dso/unix/dso.c 2008-06-19 23:10:20.000000000 +0200 +++ dso/unix/dso.c.oden 2009-02-08 13:51:19.000000000 +0100 @@ -123,7 +123,7 @@ APR_DECLARE(apr_status_t) apr_dso_load(a void *os_handle = dlopen((char *)path, RTLD_NOW | RTLD_GLOBAL); #else - int flags = RTLD_NOW | RTLD_GLOBAL; + int flags = RTLD_NOW | RTLD_GLOBAL | RTLD_DEEPBIND; void *os_handle; #ifdef _AIX if (strchr(path + 1, '(') && path[strlen(path) - 1] == ')')