diff --git a/src/lib/python/isc/log/log.cc b/src/lib/python/isc/log/log.cc index 68cf213c2a..682ee2a331 100644 --- a/src/lib/python/isc/log/log.cc +++ b/src/lib/python/isc/log/log.cc @@ -29,6 +29,20 @@ using namespace isc::log; using std::string; using boost::bind; +// We encountered a strange problem with Clang (clang version 2.8 +// (tags/RELEASE_28 115909)) on OSX, where unwinding the stack +// segfaults the moment this exception was thrown and caught. +// +// Placing it in a named namespace instead of the original +// unnamed namespace appears to solve this, so as a temporary +// workaround, we create a local randomly named namespace here +// to solve this issue. +namespace clang_unnamed_namespace_workaround { + // To propagate python exceptions trough our code + class InternalError {}; +} +using namespace clang_unnamed_namespace_workaround; + namespace { // This is for testing only. The real module will have it always set as @@ -361,9 +375,6 @@ Logger_isDebugEnabled(LoggerWrapper* self, PyObject* args) { } } -// To propagate python exceptions trough our code -class InternalError {}; - string objectToStr(PyObject* object, bool convert) { PyObject* cleanup(NULL);