diff --git a/autowiring/AutoNetServer.h b/autowiring/AutoNetServer.h
index 04bbc0053..b059d318b 100644
--- a/autowiring/AutoNetServer.h
+++ b/autowiring/AutoNetServer.h
@@ -22,6 +22,8 @@ class AutoNetTransportHandler {
///
class AutoNetTransport {
public:
+ virtual ~AutoNetTransport(void){}
+
///
/// Causes the transport to begin servicing user requests
///
diff --git a/src/autowiring/BasicThread.cpp b/src/autowiring/BasicThread.cpp
index d7b859aed..561be85e2 100644
--- a/src/autowiring/BasicThread.cpp
+++ b/src/autowiring/BasicThread.cpp
@@ -71,7 +71,11 @@ void BasicThread::DoRunLoopCleanup(std::shared_ptr&& ctxt, std::sha
m_running = false;
// Need to ensure that "stop" and "running" are actually updated in memory before we mark "complete"
+#if autowiring_USE_LIBCXX
std::atomic_thread_fence(std::memory_order_release);
+#else
+ (std::lock_guard)state->m_lock;
+#endif
m_completed = true;
// Tell our CoreRunnable parent that we're done to ensure that our reference count will be cleared.