summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmar Tumballi <amar@gluster.com>2010-08-31 01:17:56 +0000
committerVijay Bellur <vijay@dev.gluster.com>2010-08-31 00:06:59 -0700
commite1afe36eb3b006be12e7d7a5b87ff181c6da1250 (patch)
tree4218f6b58813b6722748da87b214937932e530fb
parentddafbca363a5b0f0d8d1f11aa35e250d2c2c91bd (diff)
fix a crash in cleanup_and_exit ()
* fini() was being called without proper 'THIS' being set. * in protocol/client, a frame was getting created after frame pool was destroyed Signed-off-by: Amar Tumballi <amar@gluster.com> Signed-off-by: Vijay Bellur <vijay@dev.gluster.com> BUG: 1030 (mount directory is not unmounted after killing glusterfs process) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1030
-rw-r--r--glusterfsd/src/glusterfsd.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c
index 9b343f590..bce5bfd4c 100644
--- a/glusterfsd/src/glusterfsd.c
+++ b/glusterfsd/src/glusterfsd.c
@@ -647,27 +647,31 @@ cleanup_and_exit (int signum)
gf_log ("glusterfsd", GF_LOG_NORMAL, "shutting down");
- tmp_pool = ctx->pool;
- mem_pool_destroy (tmp_pool->frame_mem_pool);
- mem_pool_destroy (tmp_pool->stack_mem_pool);
- tmp_pool = NULL;
- mem_pool_destroy (ctx->stub_mem_pool);
-
/* Call fini() of FUSE xlator first */
trav = ctx->master;
- if (trav && trav->fini)
+ if (trav && trav->fini) {
+ THIS = trav;
trav->fini (trav);
+ }
/* call fini() of each xlator */
trav = NULL;
if (ctx->active)
trav = ctx->active->top;
while (trav) {
- if (trav->fini)
+ if (trav->fini) {
+ THIS = trav;
trav->fini (trav);
+ }
trav = trav->next;
}
+ tmp_pool = ctx->pool;
+ mem_pool_destroy (tmp_pool->frame_mem_pool);
+ mem_pool_destroy (tmp_pool->stack_mem_pool);
+ tmp_pool = NULL;
+ mem_pool_destroy (ctx->stub_mem_pool);
+
glusterfs_pidfile_cleanup (ctx);
exit (0);