diff options
Diffstat (limited to 'cpp/src/Ice/ThreadPool.cpp')
-rw-r--r-- | cpp/src/Ice/ThreadPool.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/cpp/src/Ice/ThreadPool.cpp b/cpp/src/Ice/ThreadPool.cpp index 8c5b0faa5bb..98166dbd201 100644 --- a/cpp/src/Ice/ThreadPool.cpp +++ b/cpp/src/Ice/ThreadPool.cpp @@ -142,13 +142,15 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, bool server) : _threads.push_back(thread->start()); } } - catch (const IceUtil::Exception&) + catch (const IceUtil::Exception& ex) { - // - // TODO: This doesn't look correct to me -- where are the - // started threads joined with in the event of a failure? - // + { + Error out(_instance->logger()); + out << "cannot create threads for thread pool:\n" << ex; + } + destroy(); + joinWithAllThreads(); throw; } } |