diff --git a/devices/clients/udp_receiver.py b/devices/clients/udp_receiver.py
index 741474996079933c39ef776ee66875ace95c5bba..cca308ccea0a75d2daab14c3ded17ca0418e42a0 100644
--- a/devices/clients/udp_receiver.py
+++ b/devices/clients/udp_receiver.py
@@ -96,7 +96,8 @@ class UDPReceiver(Thread):
         self.join(self.DISCONNECT_TIMEOUT)
 
         if self.isAlive():
-            logger.error("UDP thread not shutting down for {}:{}".format(self.host, self.port))
+            # there is nothing we can do except wait (stall) longer, which could be indefinitely.
+            logger.error(f"UDP thread for {self.host}:{self.port} did not shut down after {self.DISCONNECT_TIMEOUT} seconds, just leaving it dangling. Please attach a debugger to thread ID {self.ident}.")
 
     def __del__(self):
         self.disconnect()
diff --git a/devices/devices/sdp/statistics_collector.py b/devices/devices/sdp/statistics_collector.py
index 4954fd0c38bf4a8cebfd788707ab1de51775a228..266eb451cfeffb44b7f7dbda54d192acf2a4708a 100644
--- a/devices/devices/sdp/statistics_collector.py
+++ b/devices/devices/sdp/statistics_collector.py
@@ -74,7 +74,8 @@ class StatisticsCollector(Thread):
         self.join(self.DISCONNECT_TIMEOUT)
 
         if self.isAlive:
-            logger.error("Statistics thread not shutting down")
+            # there is nothing we can do except wait (stall) longer, which could be indefinitely.
+            logger.error(f"Statistics thread did not shut down after {self.DISCONNECT_TIMEOUT} seconds, just leaving it dangling. Please attach a debugger to thread ID {self.ident}.")
 
     def process_packet(self, packet):
         """ Update any information based on this packet. """