The Oracle recommendation was written for Solaris, not Linux.
On Solaris, if you compiled .so without _REENTRANT and ended up loaded with a multi-threaded application, then very bad things can happen (for example, corrupted random data from internal libc components). This happened because, without a definition, by default you got unlocked versions of some routines.
This was the case when I first read this documentation, which was perhaps 15 years ago, the mention of the -mt flag for the sun studio compiler was added after the last time I read this document.
This is no longer the case. You always get the same routine, regardless of whether you compile the _REENTRANT flag; now it is just a macro of functions, not a macro of behavior.
source share