linux-c-programming.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Uğur ATA" <ataugur@gmail.com>
To: linux-c-programming <linux-c-programming@vger.kernel.org>
Subject: Help on a memory leak issue
Date: Mon, 11 Jan 2010 17:05:08 +0200	[thread overview]
Message-ID: <8eec89ee1001110705k3257bd80r2a719a67b0bda641@mail.gmail.com> (raw)

Hi,
I have a client server application which uses a local file socket.
When i connect to the server part and then close the connection the
memory usage stays the same indicating that the resources aren't
freed. Other then this memory leak problem everything is working fine.
Messeages are sent and received. After each message is sent/received
rss indicator in the ps command increases with different amounts for
each different message. When the rss reaches around 64MB the program
stops working and freezes. Then it needs to be restarted.
I couldn't find a solution to this problem anywhere on the web so
thanks in advance if someone could be of help.
Below is the result of uname -a:
Linux server 2.6.27.7-smp #2 SMP Thu Nov 20 22:32:43 CST 2008 i686
Pentium III (Katmai) GenuineIntel GNU/Linux
Slackware 12.2 is running on that kernel and my source for the server part is:
<-------------
void wait_for_message() {
    sigset_t waitset;
    sigemptyset( &waitset );
    sigaddset( &waitset, SIGALRM );
    pthread_sigmask( SIG_BLOCK, &waitset, NULL );
    int loop = 1;
    // use local socket
    int socket_fd = socket(PF_UNIX, SOCK_STREAM, 0);
    struct sockaddr_un name;
    /* Indicate that this is a server.   */
    name.sun_family = AF_LOCAL;
    strcpy(name.sun_path, SOCKET); // use socket file
    bind(socket_fd, &name, SUN_LEN(&name));
    // maximum number of requests stacked
    listen(socket_fd, 10);
    do {
        struct sockaddr_un client_name;
        socklen_t client_name_len = 0; // it should be >= 0 otherwise
accept returns EINVAL
        int client_socket_fd;
        client_socket_fd = accept(socket_fd, &client_name, &client_name_len);

        if (read(client_socket_fd, &length, sizeof (length)) > 0) {
             .....
        }
        shutdown(client_socket_fd, SHUT_RDWR);
        close(client_socket_fd);
    } while (loop);
    /* Remove the socket file.   */
    close(socket_fd);
    unlink(SOCKET);
-------------->
and the client part is:
char* sendMessage(char* message) {
    char* result = NULL;
    int length = strlen(message) + 1;
    if (message == NULL || length <= 0) {
        return NULL;
    }
    int socket_fd;
    struct sockaddr_un name;
    socket_fd = socket(PF_LOCAL, SOCK_STREAM, 0);
    name.sun_family = AF_LOCAL;
    strcpy(name.sun_path, SOCKET);
    connect(socket_fd, &name, SUN_LEN(&name));
    // write length of the message
    write(socket_fd, &length, sizeof (length));
   //write message itself
    write(socket_fd, message, length);
    length = 0;
    // read length of the result
    read(socket_fd, &length, sizeof(length));
    if (length > 0) {
       ......
    }
    shutdown(socket_fd, SHUT_RDWR);
    close(socket_fd);
    return result;
}
--
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

             reply	other threads:[~2010-01-11 15:05 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-11 15:05 Uğur ATA [this message]
2010-01-11 20:17 ` Help on a memory leak issue ern0
2010-01-11 20:37 ` Glynn Clements
2010-01-12  8:02   ` Sam Liao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8eec89ee1001110705k3257bd80r2a719a67b0bda641@mail.gmail.com \
    --to=ataugur@gmail.com \
    --cc=linux-c-programming@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).