From bbfde812152caabaabb468c7122924ab4243bbd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Thu, 7 Nov 2013 16:48:04 +0100 Subject: [PATCH] Fix segfault in TM finalize action (cherry picked from commit 6cee0680b92787bc25f6a32f3a9df411f088d81c) --- src/tm/TransferManager.cc | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/tm/TransferManager.cc b/src/tm/TransferManager.cc index 0552b89295..a83f01a7e2 100644 --- a/src/tm/TransferManager.cc +++ b/src/tm/TransferManager.cc @@ -165,6 +165,15 @@ void TransferManager::do_action(const string &action, void * arg) delete static_cast(arg); + if (action == ACTION_FINALIZE) + { + NebulaLog::log("TrM",Log::INFO,"Stopping Transfer Manager..."); + + MadManager::stop(); + + return; + } + vm = vmpool->get(vid,true); if (vm == 0) @@ -172,10 +181,20 @@ void TransferManager::do_action(const string &action, void * arg) return; } - hid = vm->get_hid(); - vm->unlock(); + if (vm->hasHistory()) + { + hid = vm->get_hid(); - host = hpool->get(hid,true); + vm->unlock(); + + host = hpool->get(hid,true); + } + else + { + vm->unlock(); + + host = 0; + } if ( host == 0) { @@ -334,12 +353,6 @@ void TransferManager::do_action(const string &action, void * arg) { driver_cancel_action(vid); } - else if (action == ACTION_FINALIZE) - { - NebulaLog::log("TrM",Log::INFO,"Stopping Transfer Manager..."); - - MadManager::stop(); - } else { ostringstream oss;