|
 |
3604df |
From 37edb3fb56e2612e218b9f29424b4b6a79d18a94 Mon Sep 17 00:00:00 2001
|
|
 |
3604df |
From: Atin Mukherjee <amukherj@redhat.com>
|
|
 |
3604df |
Date: Sat, 18 Mar 2017 16:29:10 +0530
|
|
 |
3604df |
Subject: [PATCH 305/316] rpc: bump up conn->cleanup_gen in
|
|
 |
3604df |
rpc_clnt_reconnect_cleanup
|
|
 |
3604df |
|
|
 |
3604df |
Commit 086436a introduced generation number (cleanup_gen) to ensure that
|
|
 |
3604df |
rpc layer doesn't end up cleaning up the connection object if
|
|
 |
3604df |
application layer has already destroyed it. Bumping up cleanup_gen was
|
|
 |
3604df |
done only in rpc_clnt_connection_cleanup (). However the same is needed
|
|
 |
3604df |
in rpc_clnt_reconnect_cleanup () too as with out it if the object gets destroyed
|
|
 |
3604df |
through the reconnect event in the application layer, rpc layer will
|
|
 |
3604df |
still end up in trying to delete the object resulting into double free
|
|
 |
3604df |
and crash.
|
|
 |
3604df |
|
|
 |
3604df |
Peer probing an invalid host/IP was the basic test to catch this issue.
|
|
 |
3604df |
|
|
 |
3604df |
>Reviewed-on: https://review.gluster.org/16914
|
|
 |
3604df |
>Smoke: Gluster Build System <jenkins@build.gluster.org>
|
|
 |
3604df |
>NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
|
|
 |
3604df |
>Reviewed-by: Milind Changire <mchangir@redhat.com>
|
|
 |
3604df |
>CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
|
|
 |
3604df |
>Reviewed-by: Jeff Darcy <jeff@pl.atyp.us>
|
|
 |
3604df |
|
|
 |
3604df |
Change-Id: Id5332f3239cb324cead34eb51cf73d426733bd46
|
|
 |
3604df |
BUG: 1440162
|
|
 |
3604df |
Signed-off-by: Atin Mukherjee <amukherj@redhat.com>
|
|
 |
3604df |
Reviewed-on: https://code.engineering.redhat.com/gerrit/102946
|
|
 |
3604df |
---
|
|
 |
3604df |
rpc/rpc-lib/src/rpc-clnt.c | 4 +++-
|
|
 |
3604df |
.../glusterd/bug-1433578-invalid-peer-glusterd-crash.t | 14 ++++++++++++++
|
|
 |
3604df |
2 files changed, 17 insertions(+), 1 deletion(-)
|
|
 |
3604df |
create mode 100644 tests/bugs/glusterd/bug-1433578-invalid-peer-glusterd-crash.t
|
|
 |
3604df |
|
|
 |
3604df |
diff --git a/rpc/rpc-lib/src/rpc-clnt.c b/rpc/rpc-lib/src/rpc-clnt.c
|
|
 |
3604df |
index 7bd4495..02045e1 100644
|
|
 |
3604df |
--- a/rpc/rpc-lib/src/rpc-clnt.c
|
|
 |
3604df |
+++ b/rpc/rpc-lib/src/rpc-clnt.c
|
|
 |
3604df |
@@ -495,8 +495,10 @@ rpc_clnt_reconnect_cleanup (rpc_clnt_connection_t *conn)
|
|
 |
3604df |
|
|
 |
3604df |
if (conn->reconnect) {
|
|
 |
3604df |
ret = gf_timer_call_cancel (clnt->ctx, conn->reconnect);
|
|
 |
3604df |
- if (!ret)
|
|
 |
3604df |
+ if (!ret) {
|
|
 |
3604df |
reconnect_unref = _gf_true;
|
|
 |
3604df |
+ conn->cleanup_gen++;
|
|
 |
3604df |
+ }
|
|
 |
3604df |
conn->reconnect = NULL;
|
|
 |
3604df |
}
|
|
 |
3604df |
|
|
 |
3604df |
diff --git a/tests/bugs/glusterd/bug-1433578-invalid-peer-glusterd-crash.t b/tests/bugs/glusterd/bug-1433578-invalid-peer-glusterd-crash.t
|
|
 |
3604df |
new file mode 100644
|
|
 |
3604df |
index 0000000..1aea8bc
|
|
 |
3604df |
--- /dev/null
|
|
 |
3604df |
+++ b/tests/bugs/glusterd/bug-1433578-invalid-peer-glusterd-crash.t
|
|
 |
3604df |
@@ -0,0 +1,14 @@
|
|
 |
3604df |
+#!/bin/bash
|
|
 |
3604df |
+
|
|
 |
3604df |
+. $(dirname $0)/../../include.rc
|
|
 |
3604df |
+
|
|
 |
3604df |
+cleanup;
|
|
 |
3604df |
+
|
|
 |
3604df |
+## Start glusterd
|
|
 |
3604df |
+TEST glusterd;
|
|
 |
3604df |
+TEST pidof glusterd;
|
|
 |
3604df |
+
|
|
 |
3604df |
+TEST ! $CLI peer probe invalid-peer
|
|
 |
3604df |
+
|
|
 |
3604df |
+TEST pidof glusterd;
|
|
 |
3604df |
+cleanup;
|
|
 |
3604df |
--
|
|
 |
3604df |
1.8.3.1
|
|
 |
3604df |
|