All,

        My program building with SSL library run ok under debug mode,But dump under 
release build when produce PRNG.Using the Purify integration, it report that DUMP when 
calling RAND_screen().
        
        When I use the Purify to check the memory leak of my SSL project,which in 
debug build,once I call RAND_screen() to generate PRNG(same like s_server.c).The 
purify report errors like below:

 --------------------------------------------------------------------------
 [W] PAR: UnmapViewOfFile(0x3120001) arg #1 (lpBaseAddress) not identical to value 
returned by MapViewOfFile (3120000) {1 occurrence}
        Call location
            UnmapViewOfFile [KERNEL32.dll]
            DllUnregisterServer [rsaenh.dll]
            DllUnregisterServer [rsaenh.dll]
            CPReleaseContext [rsaenh.dll]
            DllUnregisterServer [rsaenh.dll]
            RtlCharToInteger [ntdll.dll]
            RtlCharToInteger [ntdll.dll]
            LdrLoadDll     [ntdll.dll]
            LoadLibraryExA [KERNEL32.dll]
            LoadLibraryA   [KERNEL32.dll]
            CryptAcquireContextA [advapi32.dll]
            RAND_poll      [LIBEAY32.dll]
            app_RAND_load_file [app_rand.c:133]
                #ifdef WINDOWS
                    BIO_printf(bio_e,"Loading 'screen' into random state -");
                    BIO_flush(bio_e);
             =>     RAND_screen();
                    BIO_printf(bio_e," done\n");
                #endif
                
            InitSSL        [gextern.cpp:1130]
                        if(WinSocket_init() <0) {
                            return -2;
                        }
             =>         if (!app_RAND_load_file(NULL, bio_err, 1) && !RAND_status()){
                            fprintf(stderr,"warning, not much extra random data, 
consider using the -rand option\n");
                            goto err;
                        }
           main           [main.cpp:120]

 --------------------------------------------------------------------------

    I see the problem is RAND_screen().So my first question is whether SSL only using 
in debug build,and the purify tool is right? Can anyone help me about it ?


    Another,I have read lot of problem about memory leak in openssl-users forum. I 
think I had comply some experienced
conduct ,such as noticing session cache mode,call some  free function like 
ERR_remove_state(0),SSL_CTX_flush_sessions(ctx,time(NULL)) when end the SSL session. 
        When debug in Solaris ,the memory states show that, after successed 
handshaking and data packet delivering continued dozens times, the heap occupancy 
grows 8k regular when create a new handshake. And the test application act as SSL 
client, session cache mode is OFF, a new handshake used a new SSL_CTX freed it when 
end. My application code have been checked with Boundschecker tool. I am bewildered 
with what happened.

#top
PID  USERNAME  THR PRI NICE  SIZE   RES    STATE   TIME    CPU COMMAND
2275 root       5  48    0   2944K  2064K  sleep   6:46  0.12% pa

#memlook
PID     IMAGE           RSS             HEAP            STACK
2275    3014656         2113536         262696          40960

          

Thanks.
                                                                
Stevens.Wang
[EMAIL PROTECTED]
2002-03-14
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to