Sponsored Content
Top Forums Programming [C] help with string handling memory leak Post 302292415 by VRoemer on Friday 27th of February 2009 08:29:21 PM
Old 02-27-2009
Question [C] help with string handling memory leak

Ok, so I've been trying to figure out my fualt in this code for probably a week now.

Hopefully somebody will see what I couldn't see.

Anyways, any help would be greatly appreciated. Lets begin.

Code:
void serverStatus( const char* data )
{
    char* s          ;
    int   i, l = 0   ;
    char* tok        ;
    int   tokcount   ;
    hash_t srv[32]   ;
    bzero(srv, sizeof(srv));

    s = strdup( data+20 );
    strcpy(s, data+20);

    // Tokenize
    for(i = 0, tok = strtok( s, "\\"); tok; tok = strtok( NULL, "\\"))
    {
        l = ( l ? 0 : 1 );
        if( l ) // if its a variable
            strcpy( srv[i].key, tok );

        else    // if its a value
        {
            strcpy( srv[i].val, tok );
            ++i;
        }
    }

    // Dump server info
    tokcount = i;
    i = 0;
    while( i < tokcount )
    {
        if ( strncmp( srv[i].key, SRV_HOSTNAME, strlen(SRV_HOSTNAME) ) == 0 )
        {
            char* tmp = sanitizeString(srv[i].val);
            printf( "%s %s\n", srv[i].key, srv[i].val );
            free(tmp);
        }
        else if ( strncmp( srv[i].key, SRV_MAPNAME,  strlen(SRV_MAPNAME) ) == 0 )
        {
            printf( "%s %s\n", srv[i].key, srv[i].val );
        }        
        ++i;
    }
}

This is my code in question. Although I understand the problem could be prior in my network handling. ( we can explore more on this later. )

So what I know is that the code 'generally', if it does at all, crashes in the while loop.

Freeing my pointer 's' always crashes, ALWAYS. this bothers me a bit.

finally when i do print values, sometimes it prints stuff that isn't supposed to be there. ( ie memory issue )

the hash_t type looks as follows.

Code:
typedef struct info_s {
    char key[256];
    char val[256];
    } hash_t;


none of the values that we tokenize are larger than 255 characters.


Lastly full code is accessible if you would like to see it crash in real time.
( qquery.googlecode.com )


Thanks much for any insight you can provide.
~vroemer
 

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

Memory leak of fork()

Today, I wrote a test code for fork/execvp/waitpid. In the parent process, it fork 100 child processes which only execute "date" to print the current datetime. When any child process die, the parent process will receive a SIGCHLD signal. Then, the parent process will re-fork-execvp the child... (7 Replies)
Discussion started by: whererush
7 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. Programming

Memory LEAK with pthreads

I have this code... #include <stdio.h> #include <iostream> #include <pthread.h> static void* cliente(void *datos); int main() { pthread_attr_t tattr; int ret; size_t size = PTHREAD_STACK_MIN + 0x0100; ret = pthread_attr_init(&tattr); ret =... (8 Replies)
Discussion started by: JEscola
8 Replies

5. 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

6. 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

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. Web Development

Finding Cause of Memory Leak

Hi We have just got a dedicated server with Fasthosts, O/S is Linux CentOS 6 64 bit. It was a fresh install and I have just moved one WordPress site onto there. The problem is we seem to be getting a memory leak (that's what Fasthosts said) and the database (I think) keeps crashing, so we... (3 Replies)
Discussion started by: Pokeyzx
3 Replies
BIND(1) 						      General Commands Manual							   BIND(1)

NAME
bind, mount, unmount - change name space SYNOPSIS
bind [ option ... ] new old mount [ option ... ] servename old [ spec ] unmount [ new ] old DESCRIPTION
Bind and mount modify the file name space of the current process and other processes in the same name space group (see fork(2)). For both calls, old is the name of an existing file or directory in the current name space where the modification is to be made. For bind, new is the name of another (or possibly the same) existing file or directory in the current name space. After a successful bind, the file name old is an alias for the object originally named by new; if the modification doesn't hide it, new will also still refer to its original file. The evaluation of new (see intro(2)) happens at the time of the bind, not when the binding is later used. The servename argument to mount is the name of a file that, when opened, yields an existing connection to a file server. Almost always, servename will be a file in /srv (see srv(3)). In the discussion below, new refers to the file named by the new argument to bind or the root directory of the service available in servename after a mount. Either both old and new files must be directories, or both must not be directories. Options control aspects of the modification to the name space: (none) Replace the old file by the new one. Henceforth, an evaluation of old will be translated to the new file. If they are directo- ries (for mount, this condition is true by definition), old becomes a union directory consisting of one directory (the new file). -b Both files must be directories. Add the new directory to the beginning of the union directory represented by the old file. -a Both files must be directories. Add the new directory to the end of the union directory represented by the old file. -c This can be used in addition to any of the above to permit creation in a union directory. When a new file is created in a union directory, it is placed in the first element of the union that permits creation. The spec argument to mount is passed in the attach(5) message to the server, and selects among different file trees served by the server. The srv(3) service registry device, normally bound to /srv, is a convenient rendezvous point for services that can be mounted. After boot- strap, the file /srv/boot contains the communications port to the file system from which the system was loaded. The effects of bind and mount can be undone with the unmount command. If two arguments are given to unmount, the effect is to undo a bind or mount with the same arguments. If only one argument is given, everything bound to or mounted upon old is unmounted. EXAMPLES
To compile a program with the C library from July 16, 1992: mount /srv/boot /n/dump dump bind /n/dump/1992/0716/mips/lib/libc.a /mips/lib/libc.a mk SOURCE
/sys/src/cmd/bind.c /sys/src/cmd/mount.c /sys/src/cmd/unmount.c SEE ALSO
bind(2), open(2), srv(3), srv(4) BIND(1)
All times are GMT -4. The time now is 11:24 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy