Socket - Memory Leaks
От: paxerus  
Дата: 06.09.09 16:57
Оценка:
Есть Socket сервер , все отлично работает,написал называется, начал тестировать на утечки и тут собс-но они обнаружились



Ниже написал очень упрощенный вариант ,скажите что тут не так?может сокеты не так удаляю?

//===========в stdafx.h это
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <winsock.h>
#include <stdio.h>
#include <fstream>

//======================



#include "stdafx.h"

#pragma comment (lib, "ws2_32.lib")

using namespace std;
int main(int argc, char* argv[])
  {
 
   WSADATA       wsa;
   SOCKET            m_socket;
//---- initialized winsock 2
   if(WSAStartup(MAKEWORD(2, 0),&wsa)!=0)
     {
      printf("Winsock initialization failed\n");
      return(-1);
     }
//---- start the server
     if((m_socket=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
     {
      printf("SocketServer: invalid socket (WSAStartup is missing?)\n");
      return(FALSE);
     }
     closesocket(m_socket);
     m_socket=INVALID_SOCKET;

   WSACleanup();
   return(0);
  }


тестировал на Rational Purify ,ниже лог, тут по любому что то с сокетами не так я делаю
[I] Starting main
[I] Summary of all memory leaks... {932 bytes, 2 blocks}
    [I] MPK: Potential memory leak of 896 bytes from 1 block allocated in EnumerateSecurityPackagesW [SECUR32.DLL]
            Offset 0x000000b4 referenced by 0x0017a13c, a location in a HeapAlloc'd block
            Offset 0x000000c8 referenced by 0x0017a140, a location in a HeapAlloc'd block
            Offset 0x00000102 referenced by 0x0017a158, a location in a HeapAlloc'd block
            Offset 0x00000114 referenced by 0x0017a15c, a location in a HeapAlloc'd block
            Offset 0x00000144 referenced by 0x0017a174, a location in a HeapAlloc'd block
            Offset 0x0000014e referenced by 0x0017a178, a location in a HeapAlloc'd block
            Offset 0x0000017a referenced by 0x0017a190, a location in a HeapAlloc'd block
            Offset 0x000001d4 referenced by 0x0017a194, a location in a HeapAlloc'd block
            Offset 0x0000022e referenced by 0x0017a1ac, a location in a HeapAlloc'd block
            Offset 0x00000240 referenced by 0x0017a1b0, a location in a HeapAlloc'd block
            Distribution of potentially leaked blocks
                   896 bytes from 1 block of 896 bytes (0x00179d88)
            Allocation location
                LocalAlloc     [C:\WINDOWS\system32\KERNEL32.DLL]
                EnumerateSecurityPackagesW [C:\WINDOWS\system32\SECUR32.DLL]
    [W] MLK: Memory leak of 36 bytes from 1 block allocated in QuerySecurityPackageInfoW [SECUR32.DLL]
            Distribution of leaked blocks
            Allocation location
                LocalAlloc     [c:\WINDOWS\system32\KERNEL32.DLL]
                QuerySecurityPackageInfoW [C:\WINDOWS\system32\SECUR32.DLL]
[I] Exiting with code 0 (0x00000000)
        Process time: 281 milliseconds
[I] Program terminated at 06.09.2009 22:43:33



Помогите плз разобраться
socket memory leaks
Re: Socket - Memory Leaks
От: paxerus  
Дата: 06.09.09 17:29
Оценка:
может в настройках линкера чтото нужно такое выставить ?
Re[2]: Socket - Memory Leaks
От: paxerus  
Дата: 07.09.09 13:36
Оценка:
идеи будут?
Re: Socket - Memory Leaks
От: anglichanin  
Дата: 08.09.09 04:53
Оценка:
ну как минимум попробый вывалиться на месте аллокации лика

попробуй заюзать crt.

есть подозрени что это не лик вовсе.
Re: Socket - Memory Leaks
От: carpenter Голландия  
Дата: 08.09.09 08:43
Оценка:
Здравствуйте, paxerus, Вы писали:

P> [I] MPK: Potential memory leak of 896 bytes from 1 block allocated in EnumerateSecurityPackagesW [SECUR32.DLL]


насколько я понял — он пишет о потенциальных утечках — попробуй так —


using namespace std;
int main(int argc, char* argv[])
 {

 WSADATA wsa;
 SOCKET m_socket;
//---- initialized winsock 2
 if(WSAStartup(MAKEWORD(2, 0),&wsa)!=0)
 {
 printf("Winsock initialization failed\n");
WSACleanup();здесь контрольный в голову — в принципе не надо — но для чистоты эксперимента
 return(-1); 
 }
//---- start the server
 if((m_socket=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
 {
 printf("SocketServer: invalid socket (WSAStartup is missing?)\n");
WSACleanup();
 return(FALSE);
 }
 closesocket(m_socket);
 m_socket=INVALID_SOCKET;

 WSACleanup();
 return(0);
 }




если я таки прав — то в принципе чистить при выгрузке вроде как не надо — если это программа — то винда сама почистит —
но на 100% не скажу , а проверять некогда.
Весь мир — Кремль, а люди в нем — агенты
Re[2]: Socket - Memory Leaks
От: paxerus  
Дата: 08.09.09 09:51
Оценка:
C>если я таки прав — то в принципе чистить при выгрузке вроде как не надо — если это программа — то винда сама почистит —
C>но на 100% не скажу , а проверять некогда.

вот результат вашего кода

[I] Starting main
[I] Terminating thread 0x4aa0
[I] Terminating thread 0x4d74
[I] Terminating thread 0x440c
[I] Summary of all memory leaks... {7936 bytes, 76 blocks}
    [W] MLK: Memory leak of 7592 bytes from 73 blocks allocated in WmiOpenBlock [ADVAPI32.DLL]
            Distribution of leaked blocks
            Allocation location
                RtlAllocateHeap+0xc  [c:\WINDOWS\system32\NTDLL.DLL ip=0x6C9013B9]
                WmiOpenBlock+0x1ec   [C:\WINDOWS\system32\ADVAPI32.DLL ip=0x77DD67D7]
    [I] MPK: Potential memory leak of 208 bytes from 2 blocks allocated in WmiOpenBlock [ADVAPI32.DLL]
            Offset 0x00000050 referenced by 0x0243d703, a location in a memory-mapped range
            Distribution of potentially leaked blocks
            Allocation location
                RtlAllocateHeap+0xc  [c:\WINDOWS\system32\NTDLL.DLL ip=0x6C9013B9]
                WmiOpenBlock+0x1ec   [C:\WINDOWS\system32\ADVAPI32.DLL ip=0x77DD67D7]
    [W] MLK: Memory leak of 136 bytes from 1 block allocated at ip=0x5d5b49c3
            Distribution of leaked blocks
            Allocation location
                HeapAlloc+0xc        [c:\WINDOWS\system32\KERNEL32.DLL ip=0x6C803450]
                ???            [ip=0x5D5B49C2]
[I] Exiting with code 0 (0x00000000)
[I] Program terminated at 2009-09-08 15:49:16


как видете есть не только потенциальные утечки
[W] MLK: Memory leak of 136 bytes from 1 block allocated at ip=0x5d5b49c3
Distribution of leaked blocks

кстати когда тестирю сам сервер заваливаю его запросами но при этом утечка не меняется,в основном либо это же число либо другое, возможно не утечка только не понятно тогда что
Re: Socket - Memory Leaks
От: Pavel Dvorkin Россия  
Дата: 08.09.09 10:52
Оценка:
Здравствуйте, paxerus, Вы писали:

P>Помогите плз разобраться


Во-первых, это не твой лик, если он и имеет место.
Во-вторых, ты все равно ничего не сделаешь тут.
В-третьих, попробуй еще Visual Leak Detector. Он очень прост и легко подключается — #include <vld.h> — и все.
With best regards
Pavel Dvorkin
Re[2]: Socket - Memory Leaks
От: paxerus  
Дата: 08.09.09 11:34
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, paxerus, Вы писали:


P>>Помогите плз разобраться


PD>Во-первых, это не твой лик, если он и имеет место.

PD>Во-вторых, ты все равно ничего не сделаешь тут.
PD>В-третьих, попробуй еще Visual Leak Detector. Он очень прост и легко подключается — #include <vld.h> — и все.

мм таким не пробовал спасибо попробую и отпишусь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.