Handle Leaks - shmem-win32.c shmem.c - OpenSSL 1.0.1l

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Avery,

I am afraid your program demonstrates very little.

If you load OpenSSL library, you have to call some of the OpenSSL free
functions as indicated in a previous post,
and if you create a thread, you have to call CloseHandle() :

#include <windows.h>
#include <crtdbg.h>

#include <openssl/ssl.h>
#include <openssl/err.h>

DWORD __stdcall thread1( LPVOID l )
{
    for( int i=0; i<7; i++ ) 
        Sleep(1000);
    ERR_remove_state(0);
    return 0;
}

int main( int argc, char* argv[] )
{
//  _crtBreakAlloc = ...;

    SSL_library_init();
    SSL_load_error_strings();

    DWORD  t1;
    HANDLE h1 = CreateThread( 0, 0, thread1, 0, 0, &t1 );

    for( int i=0; i<7; i++ ) Sleep(1000);

    if( h1 ) { 
        WaitForSingleObject( thread1, INFINITE );
        CloseHandle( h1 );
    }
    
    ERR_remove_state(0);
    EVP_cleanup();
    ERR_free_strings();
    CRYPTO_cleanup_all_ex_data();
    sk_SSL_COMP_free( SSL_COMP_get_compression_methods());

    _CrtDumpMemoryLeaks();

    return 0;
}

Hope it helps,

Michel


De?: openssl-users [mailto:openssl-users-bounces at openssl.org] De la part de
Avery A. Tarasov
Envoy??: samedi 24 janvier 2015 22:34
??: openssl-users at openssl.org
Objet?: Re: [openssl-users] Handle Leaks - shmem-win32.c shmem.c - OpenSSL
1.0.1l

Hi Michel,

It doesn't appear to be related to that.? I added CloseHandle's and got the
same result.

Here are my updated findings... The following simple program still causes
the same Handle Leaks...

Important findings:

1)? If ?? SSL_library_init() and SSL_load_error_strings() are removed (which
are the only 2 OpenSSL functions I'm using).... the handle leaks go away.. 
2)? If ?? SSL_library_init() and SSL_load_error_strings() are kept but the
creation of the thread is removed? -- no more handle leaks..

So the problem is something related to the combination of loading OpenSSL
and creating a thread (even though that thread does nothing whatsoever
related to OpenSSL).? Very odd.

DWORD __stdcall thread1(LPVOID l)
{
??? while(1)
??? {?? Sleep(1000); ?? }
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
lpCmdLine, int nCmdShow) {


???? SSL_library_init();?? // if these 2 lines removed
??? SSL_load_error_strings();? // no more handle leaks
??? DWORD t1;
??? 
??? HANDLE h1=CreateThread(0,0,thread1,0,0,&t1);? if(h1==0)? {? return
0;???? }????? CloseHandle(h1);? //if? SSL_library_init(); and
SSL_load_error_strings();? are kept? but this line is removed... no more
handle leaks


??? while(1)
??? {
??? ??? Sleep(1000);
??? }
}






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux