Some changes in libc.so and libthread.so break the way libthread is linked with libX11.so. The most noticeable symptoms are failing signal handling in xinit, xterms that don't die after the inferior shell process exits and emacs-19 hanging after starting dired.
Apply all fixes upto fix-12 to the X11R6 sources. Remember to change OSMinorVersion to 4 in xc/config/cf/sun.cf as well and use "make Everything" or "make World", not just "make". Make sure you change the right OSMinorVersion in sun.cf, the first one is the x86 minor version, the second one is SPARC one. Change the one appropriate for your system or change both.
The resulting R6 will not run on Solaris 2.3 or earlier. If you want to have the same set of binaries for Solaris 2.3 and 2.4, you need to disable threaded X altogether by changing "#define ThreadedX YES" to "#define ThreadedX NO" in sun.cf.
Note that you must reinstall the X libraries with "make install" before things start working. There is no need to reinstall anything but libX11.so. Xterm, emacs etc., should start working after the change to libX11 is installed. Check your newly installed libX11 with dump -Lv libX11.so.6. If it still shows libthread as "NEEDED", the rebuild didn't work correctly. Double check your changes. (If you previously used the patch from the FAQ, make sure you remove it before applying fix-12.)
For multi-threaded X to work it necessary to install patch 101925-02 to fix problems in header files [2.4]. Unless you are running gcc 2.8.0 or later, you need to reinstall gcc or re-run just-fixinc after installing that patch.