Sponsored Content
Full Discussion: leak memory when thread exit
Top Forums Programming leak memory when thread exit Post 302276033 by Frank2004 on Tuesday 13th of January 2009 01:06:29 AM
Old 01-13-2009
leak memory when thread exit

In our concurrent tcp server program, once the connection comes, the program create a thread to process acception. When the client exit, the server closed socket and the thread exited, the problem is the memory can not release normally. The code looks like the followings:
Code:
main()
{       
    .......
 
    while(1==1)
                {
                        channel=srv_accept(sockfd,(struct sockaddr *)&tcp_cli_addr,&length);
                        if(channel<0)
                        {
                                //cout<<"channel ="<<channel<<" retry srv_accept ...."<<endl;
                                continue;
                        }
                        num=-1; 
                       // find the nonused pthread number.
                        for(int i=0;i<MAX_REPORT_NUM;i++)
                                {       
                                        if(pth_struct[i].flag<0)
                                        {       
                                                num=i;
                                                break;
                                        }
                                }
                        printf("num is %d \n",num);
                        for(int i=0;i<MAX_REPORT_NUM;i++)
                                {       
                                        printf("....pos=%d flag=%d ......\n",i,pth_struct[i].flag);
                                }
                        if(num<0)
                        {       
                                Tcp_close(channel);
                                continue;
                        }
                        pthch[num].channel=channel;
                        pthch[num].pos=num;
                        pth_struct[num].flag=1;
                         
                       pthread_create(&pth_struct[num].pthread_no,&attr,(pthread_startroutine_t)channel_handler,

(pthread_addr_t *)&pthch[num]);
        }

}

int  channel_handler(struct  pthname_channel *recv_s=NULL)// handling the tcp message.
{
      .......
       while(1==1)
        {
                ret=Tcp_read(recv_s->channel,(char *)&ptr,sizeof(struct  MESS_BLOCK));
                if(ret<=0)
                {       
                        printf("@@@@@@@@@@@@ ------ Tcp_read err : ---------- @@@@@@@@@@@@@  \n");
                        fflush(stdout);
                        Tcp_close(recv_s->channel);
                        pth_struct[recv_s->pos].flag=-1;
                        
                        tid = pthread_self();
                        pthread_detach((pthread_t *)&tid);
                        pthread_exit(0);
                        break;
                }
            // processing packets .
}

We wants the program can free the thread resource normally once the connection closed and thread exit, otherwise the memory block become bigger with the thread creating, any suggestion?
 

9 More Discussions You Might Find Interesting

1. Programming

about virtual memory and memory leak

Hi, First of all I appreciate this group very much for its informative discussions and posts. Here is my question. I have one process whose virtual memory size increases linearly from 6MB to 12MB in 20 minutes. Does that mean my process has memory leaks? In what cases does the... (4 Replies)
Discussion started by: shriashishpatil
4 Replies

2. Programming

POSIX Thread - Memory leak

Hi all! I am implementing an http server in c++ using the posix thread, but i am having a memory leak and i cannot find the reason. I have already commented out the section that initializes the threads and i found out, the problem is when i initialize/run the threads. In the threads i have... (1 Reply)
Discussion started by: laurovalente
1 Replies

3. UNIX for Advanced & Expert Users

Check memory leak

I am running c++ code on AIX unix.I have a doubt that my code is using some memory but it is not clearing that.Some time i am getting heap allocation problem.In my code i am not using any malloc,new functions also i am justing using pointers and arrays. Is there any way i can find out if the... (2 Replies)
Discussion started by: ukatru
2 Replies

4. UNIX for Advanced & Expert Users

Need to create a memory leak

Hi. This might be a strange request, but does anyone have any idea on a simple shell script that would use more and more memory as it ran? Like a purposeful leak. I want to test the behaviour of an already running program when the machine runs out of memory. Thanks! (4 Replies)
Discussion started by: rebelbuttmunch
4 Replies

5. IP Networking

memory leak?

Hi All, my client server application can work in two modes: 1) one direction - only client sends msgs to server 2) two directions - server gives 'answers' to client. when program run in the first mode it looks OK, but when server answers to client than client's application exit its... (2 Replies)
Discussion started by: lenna
2 Replies

6. Programming

memory leak problem

hi all Can any one plz explain me about memory leak problem Thankx (5 Replies)
Discussion started by: sonali
5 Replies

7. Programming

Memory Leak

Hi, I am trying a database server which keeps a B+ plus tree structure and works on it. I am trying to find the memory used/leak while executing this process. I check the memory leak by using ps uax command. When i execute a delete query i am sure that my code frees up the existing... (9 Replies)
Discussion started by: kumaran_5555
9 Replies

8. Red Hat

Memory leak

Hi all I am using RED HAT 5.4, and i am getting memory uses problem. when i use "sync;echo 3 > /proc/sys/vm/drop_cache" command the memory will release after 2,3 hour memory show 95%. pls suggest right way. thanks (37 Replies)
Discussion started by: reply.ravi
37 Replies

9. Programming

Help regarding memory leak in this C program

I have written this code in C which reads a very large collection of text files and does some processing. The problem with this code is that there are memory leaks which I am not able to figure out as to where the problem is. When I run this code, and see the memory usage using top command, then I... (7 Replies)
Discussion started by: shoaibjameel123
7 Replies
iv_thread(3)						    ivykis programmer's manual						      iv_thread(3)

NAME
iv_thread_create, iv_thread_set_debug_state - ivykis thread convenience functions SYNOPSIS
#include <iv_thread.h> int iv_thread_create(char *name, void (*start_routine)(void *), void *arg); void iv_thread_set_debug_state(int state); DESCRIPTION
iv_thread_create is a wrapper around pthread_create(3) which will maintain an ivykis main loop reference in the calling thread (which must be an ivykis(3) thread, i.e. have had iv_init(3) called in it) for as long as the created thread is alive. Maintaining a reference on the calling thread's ivykis event loop makes sure that the calling thread will not return from its ivykis main loop before the created thread exits, as that could cause cleanup still happening in the created thread to be interrupted when the calling thread subsequently calls exit(3). The created thread need not be an ivykis thread. Enabling debugging by calling iv_thread_set_debug with a nonzero argument will print a debug message to standard error whenever a thread is created via iv_thread_create, whenever a thread so created terminates normally by returning from its start_routine, self-terminates by calling pthread_exit(3), or is successfully canceled by pthread_cancel(3), and whenever destruction of such a thread is signaled back to the calling thread. For inter-thread signaling, iv_thread uses iv_event(3). SEE ALSO
ivykis(3), iv_event(3), exit(3), pthread_cancel(3), pthread_create(3), pthread_exit(3) ivykis 2010-09-13 iv_thread(3)
All times are GMT -4. The time now is 06:48 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy