As a state of art information: one of our customers that had this issue
removed a CPU from his computer, and the issue vanished ! 8-)
Unfortunately, not all of our customers agree to downgrade thier
computers, so, please, if anyone has an advice about how to handle this
issue, it will be welcome !

Luc Perthuis wrote:
> Hello!
> We've got an issue using openssl (0.9.8a to 0.9.8d) libraries with our
> product.
> It works fine on any Unix or even on most windows platforms.
> But, unfortunately, it crashes if run on a quadri pro Xeon Windows
> 2003 platform.
> There is no evidence that's the only platform to show this issue, but
> it actually happens on at least four instances of such a machine.
> The stack of the crash often contains "RAND_POLL" but doesn't seem to
> be reliable.
>
> We could reproduce the same issue with the very simple code attached
> here.
>
> It crashes only if a bunch of executables are launched in a very short
> time.
> Sounds like a real time issue at loading time ... quite strange.
> Well "loading time" is an hypothesis based on the stack: most of the
> time it appears to happen before entering "main".
> We know that windows loads and initialises the DLL modules before
> calling main ... hence our hypothesis
>
> A command line like the following one may be usefull to reproduce the
> issue (it creates 200 wrnd instances):
> for %i in (0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j) do start /min
> /high wrnd.exe & start /min /high wrnd.exe & start /min /high wrnd.exe
> & start /min /high wrnd.exe & start /min /high wrnd.exe & start /min
> /high wrnd.exe & start /min /high wrnd.exe & start /min /high wrnd.exe
> & start /min /high wrnd.exe & start /min /high wrnd.exe
>
> wrnd.exe being built from the attached sample source code
>
> Any hint or help around such an issue will be really welcome.
>
> In case it could matter, here are the command lines used to build the
> executable:
>
> "c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\Bin\cl.exe"
> -IC:\3rdparty\openssl-0.9.8a\inc32 -I"c:\Program Files\Microsoft
> Visual Studio .NET 2003\Vc7\Include" /D WIN32 /GR /Ob1 /Oi /Ot /Gs
> /Gm- /Gy /D "NDEBUG" /MD /Zi /GL /wd4786 /GB /Oy /TC /c /W3 /EHsc
> /Zm1000 -c -o test.obj test.c
>
> "c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\Bin\link.exe"
> /LTCG:status /nologo /nodefaultlib /out:wrnd.exe test.obj
> "C:\openssl\lib\libeay32.lib" "C:\openssl\lib\ssleay32.lib"
> "c:\Program Files\Microsoft Visual Studio .NET
> 2003\Vc7\lib\msvcrt.lib" "c:\Program Files\Microsoft
> SDK\lib\kernel32.lib" "c:\Program Files\Microsoft Visual Studio .NET
> 2003\Vc7\lib\OLDNAMES.lib"
>
> ------------------------------------------------------------------------
>
> #include <stdio.h>
> #include <time.h>
> #include <openssl/err.h>
> #include <openssl/ssl.h>
> #include <openssl/rand.h>
> #ifdef WIN32
> #include <windows.h>
> #define my_sleep(n) Sleep(1000*(n))
> #else
> #define my_sleep(n) sleep(n)
> #endif
>
> int main(int argc)
> {
>   register int i, j;
>   int retcode = 0;
>   time_t start, end;
>   char buffer [2000];
>   unsigned char data [512];
>   const char *file = NULL;
>   const char rng_seed [] = "string to make the random number " \
>                             "generator think it has entropy ;)";
>
>   time(&start);
>   if (argc != 1) {
> #ifdef WIN32
>     DebugBreak();
> #else
>     while (argc != 1) {
>       sleep(1);
>     }
> #endif
>   }
>
>   ERR_load_crypto_strings ();
>   SSL_load_error_strings ();
>
>   file = RAND_file_name (buffer, sizeof (buffer));
>
>   if (file != NULL) {
>     printf("Rand file = %s\n", file);
>     retcode = RAND_load_file (file, -1);
>   }
>
> #ifdef WIN32
>   RAND_screen ();
> #endif
>
>   if (file == NULL || !retcode) {
>     if (RAND_status () == 0) {
>       RAND_seed (rng_seed, sizeof (rng_seed) - 1);
>     }
>   }
>   printf("RAND_status = %d\n", RAND_status());
>
>   j=123;
>   for (i=0; i<41; i++) {
>     my_sleep(1+(data[j]%13));
>     if (!RAND_bytes(data, 512)) {
>       printf("Rand generation stopped at step %d\n", i);
>       ERR_print_errors_fp(stdout);
>       break;
>     }
>     j=data[j];
>   }
>
>   if (file != NULL) {
>     retcode = RAND_write_file (file);
>   }
>   RAND_cleanup ();
>   ERR_print_errors_fp(stdout);
>
>   EVP_cleanup (); 
>   CRYPTO_cleanup_all_ex_data ();
>   ERR_remove_state (0);
>   ERR_free_strings ();
>
>   time(&end);
>   printf("time ellapsed: %d seconds\n", (int)(end-start));
>
>   return retcode;
> }
>   


-- 
alea+
Luc

begin:vcard
fn:Luc Perthuis
n:Perthuis;Luc
org:Atempo S.A.;Engineering
adr:;;PIBS;VANNES;;56000;FRANCE
email;internet:[EMAIL PROTECTED]
title:Core Technologies Group Manager
tel;work:02 97 68 40 26
tel;fax:02 97 68 40 25
tel;cell:06 89 16 96 37
note;quoted-printable:Enabling Information Lifecycle Strategies=0D=0A=
	
x-mozilla-html:TRUE
url:http://www.atempo.com
version:2.1
end:vcard

Reply via email to