summaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
authorN Balachandran <nbalacha@redhat.com>2016-07-22 10:28:14 +0530
committerRaghavendra G <rgowdapp@redhat.com>2016-07-22 05:47:11 -0700
commit96befcf40767cb4ff67868af46637acfabe40bc7 (patch)
treeb99c178b0a2f7bfb97cbbff5ac10f78af36ede1f /rpc
parente8a253188f4f8cc5601f4c6b66d706d6ff720f97 (diff)
rpc/socket: pthread resources are not cleaned up
A socket_connect failure creates a new pthread which is not a detached thread. As no pthread_join is called, the thread resources are not cleaned up causing a memory leak. Now, socket_connect creates a detached thread to handle failure. > Change-Id: Idbf25d312f91464ae20c97d501b628bfdec7cf0c > BUG: 1343374 > Signed-off-by: N Balachandran <nbalacha@redhat.com> > Reviewed-on: http://review.gluster.org/14875 > Smoke: Gluster Build System <jenkins@build.gluster.org> > Reviewed-by: Atin Mukherjee <amukherj@redhat.com> > NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> > CentOS-regression: Gluster Build System <jenkins@build.gluster.org> > Reviewed-by: Jeff Darcy <jdarcy@redhat.com> (cherry picked from commit 9886d568a7a8839bf3acc81cb1111fa372ac5270) Change-Id: I69ef46013c8dbc70cbda2695f12be1f6d3720055 BUG: 1354250 Signed-off-by: N Balachandran <nbalacha@redhat.com> Reviewed-on: http://review.gluster.org/14979 Reviewed-by: Atin Mukherjee <amukherj@redhat.com> Smoke: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Raghavendra G <rgowdapp@redhat.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'rpc')
-rw-r--r--rpc/rpc-transport/socket/src/socket.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c
index e969186b2f3..a336751b589 100644
--- a/rpc/rpc-transport/socket/src/socket.c
+++ b/rpc/rpc-transport/socket/src/socket.c
@@ -3143,11 +3143,13 @@ err:
arg->this = THIS;
arg->trans = this;
arg->refd = refd;
- th_ret = pthread_create (&th_id, NULL, socket_connect_error_cbk,
- arg);
+ th_ret = gf_thread_create_detached (&th_id,
+ socket_connect_error_cbk,
+ arg);
if (th_ret) {
- gf_log (this->name, GF_LOG_ERROR, "pthread_create"
- "failed: %s", strerror(errno));
+ /* Error will be logged by gf_thread_create_attached */
+ gf_log (this->name, GF_LOG_ERROR, "Thread creation "
+ "failed");
GF_FREE (arg);
GF_ASSERT (0);
}