[stunnel-users] Periodic stunnel 4.34 core dumps on AIX 5.3

Allex, Paul M (USA E D EA STS) paul.allex at siemens.com
Fri Mar 11 01:02:19 CET 2011


Sorry for posting my follow up incorrectly.

Anyways, I believe I have located the memory leak. In the pthread
version of create_client (sthreads.c), there is the following code:

int create_client(int ls, int s, CLI *arg, void *(*cli)(void *)) {
    pthread_attr_t pth_attr;
...
    pthread_attr_init(&pth_attr);
...
    if(pthread_create(&thread, &pth_attr, cli, arg)) {
...
    return 0;
}

The issue here is that pthread_attr_destroy is not being called for
pth_attr after pthread_create is done. This leaks memory allocated into
pth_attr by pthread_attr_init.

http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_init.
3.html

I corrected the code locally and tested, and it appears to no longer
leak memory for the test I described earlier.

Patch:

*** sthreads.orig.c     Thu Mar 10 17:50:03 2011
--- sthreads.c  Thu Mar 10 17:50:43 2011
***************
*** 313,318 ****
--- 313,319 ----
      if(pthread_create(&thread, &pth_attr, cli, arg)) {
  #ifdef HAVE_PTHREAD_SIGMASK
          pthread_sigmask(SIG_SETMASK, &oldmask, NULL); /* restore the
mask */
+         pthread_attr_destroy(&pth_attr);
  #endif /* HAVE_PTHREAD_SIGMASK */
          if(arg)
              free(arg);
***************
*** 322,327 ****
--- 323,329 ----
      }
  #ifdef HAVE_PTHREAD_SIGMASK
      pthread_sigmask(SIG_SETMASK, &oldmask, NULL); /* restore the mask
*/
+     pthread_attr_destroy(&pth_attr);
  #endif /* HAVE_PTHREAD_SIGMASK */
      return 0;
  }

Thanks,

Paul Allex

-----Original Message-----
From: stunnel-users-bounces at stunnel.org
[mailto:stunnel-users-bounces at stunnel.org] On Behalf Of Allex, Paul M
(USA E D EA STS)
Sent: Wednesday, March 09, 2011 3:30 PM
To: stunnel-users at stunnel.org
Subject: [stunnel-users] Periodic stunnel 4.34 core dumps on AIX 5.3

Hello,

I have noticed that stunnel will periodically core dump on AIX 5.3. 

My configuration:
stunnel 4.34
AIX 5.3
OpenSSL 0.9.8m

After some initial investigation, I did find the following post about
stunnel
core dumps on AIX 5.3:

http://www.stunnel.org/pipermail/stunnel-users/2007-April/001528.html

Some of the core dumps were definitely due to this issue, so I rebuilt
stunnel
using the steps outlined in the post. Now I do not see the stack
overflow core
dumps, however I am still seeing other cores.

These cores have little to no valuable information in them, so I do not
have a
lot to go off of. The one thing I have noticed is that stunnel seems to
be
consuming more and more memory over time. I set up several tests to see
what 
would be causing this.

Tests:

1. Send large amounts of data through stunnel using a simple client and
server.
This seemed to have no affect on the long term memory usage of stunnel.

2. Repeatedly create and drop connections to stunnel. For this I wrote a
short
script that simply creates a connection to stunnel using telnet in a
a tight loop. I did not start anything for the stunnel instance to
connect to, 
so telnet would create a connection and get it closed immediately.

telnet --> stunnel --> nothing

The process started with a size of 836 KB and seems to increase by about
.1 to .2 KB
per connection.

$ count=1; while true; do tn localhost 10500; echo $count; count=$((
count + 1 )); done
Trying...
Escape character is '^T'.
Connection closed.
1
...
Trying...
Connected to loopback.
Escape character is '^T'.
Connection closed.
15475
Trying...
Connected to loopback.
Escape character is '^T'.
Connection closed.
15476
Trying...
Connected to loopback.
Escape character is '^T'.
Connection closed.
15477

$ monitor_process test_stunnel
Size: 836
...
Size: 2556
Size: 2564
Size: 2564
Size: 2564
Size: 2568
Size: 2572
Size: 2572
Size: 2592

I have not dug into the code yet, so I suppose that will be my next
task.
If anyone has any ideas or suggestions on what else to look at,
I would really appreciate it.

Thanks,

Paul Allex
_______________________________________________
stunnel-users mailing list
stunnel-users at stunnel.org
http://stunnel.mirt.net/mailman/listinfo/stunnel-users



More information about the stunnel-users mailing list