Avoid a race condition if another thread happens to remove the error
[openssl.git] / FAQ
diff --git a/FAQ b/FAQ
index fa44480c83410c2e7781637976a57d83d4e3bd17..f64e4ffdddc89a153438d5a6fd74cad1af7ec043 100644 (file)
--- a/FAQ
+++ b/FAQ
@@ -24,6 +24,7 @@ OpenSSL  -  Frequently Asked Questions
 * Why does the OpenSSL test fail with "bc: command not found"?
 * Why does the OpenSSL test fail with "bc: 1 no implemented"?
 * Why does the OpenSSL compilation fail on Alpha True64 Unix?
+* Why does the OpenSSL compilation fail with "ar: command not found"?
 
 
 * Which is the current version of OpenSSL?
@@ -337,16 +338,25 @@ be safely used.
 
 On some Alpha installations running True64 Unix and Compaq C, the compilation
 of crypto/sha/sha_dgst.c fails with the message 'Fatal:  Insufficient virtual
-memory to continue compilation.'  As far as the tests have shown, this is a
-compiler bug.  What happens is that it eats up resident memory (not the swap)
-until the current limit is reached and then dies with the error message given
-above.  The bug in question is clearly in the optimization code, because if
-one eliminates optimization completely (-O0), the compilation goes through
-(and the compiler consumes about 2MB of resident memory instead of 128MB or
-whatever one's limit is currently).  The very quick solution would be to
-compile everything with -O0 as optimization level, but that's not a very
-nice thing to do for those who expect to get the best result from OpenSSL.
-A bit more complicated solution is the following:
+memory to continue compilation.'  As far as the tests have shown, this may be
+a compiler bug.  What happens is that it eats up a lot of resident memory
+to build something, probably a table.  The problem is clearly in the
+optimization code, because if one eliminates optimization completely (-O0),
+the compilation goes through (and the compiler consumes about 2MB of resident
+memory instead of 240MB or whatever one's limit is currently).
+
+There are three options to solve this problem:
+
+1. set your current data segment size soft limit higher.  Experience shows
+that about 241000 kbytes seems to be enough on an AlphaServer DS10.  You do
+this with the command 'ulimit -Sd nnnnnn', where 'nnnnnn' is the number of
+kbytes to set the limit to.
+
+2. If you have a hard limit that is lower than what you need and you can't
+get it changed, you can compile all of OpenSSL with -O0 as optimization
+level.  This is however not a very nice thing to do for those who expect to
+get the best result from OpenSSL.  A bit more complicated solution is the
+following:
 
 ----- snip:start -----
   make DIRS=crypto SDIRS=sha "`grep '^CFLAG=' Makefile.ssl | \
@@ -359,3 +369,20 @@ This will only compile sha_dgst.c with -O0, the rest with the optimization
 level chosen by the configuration process.  When the above is done, do the
 test and installation and you're set.
 
+
+* Why does the OpenSSL compilation fail with "ar: command not found"?
+
+Getting this message is quite usual on Solaris 2, because Sun has hidden
+away 'ar' and other development commands in directories that aren't in
+$PATH by default.  One of those directories is '/usr/ccs/bin'.  The
+quickest way to fix this is to do the following (it assumes you use sh
+or any sh-compatible shell):
+
+----- snip:start -----
+  PATH=${PATH}:/usr/ccs/bin; export PATH
+----- snip:end -----
+
+and then redo the compilation.  What you should really do is make sure
+'/usr/ccs/bin' is permanently in your $PATH, for example through your
+'.profile' (again, assuming you use a sh-compatible shell).
+