Oh yah, just for the record since Google returns little about this topic, glibc symbol _r_debug seems special -- there really are two copies at different addresses. One for static programs, and one for dynamically linked programs. The issue with the application at hand is that a pthread structure is initialized before the dynamic copy of _r_debug. Pthread init uses memset -- which has been overridden. The custom memset attempts to check _r_debug, but the loader points it at the dynamic version which is still pending to be initialized (but the static copy is already initialized). Removing the _r_debug symbol from the application causes the special memset to suddenly use the static version initialized earlier instead -- so that was a bit misleading. Jason