diff --git a/briar-android/src/org/briarproject/android/AndroidExecutorImpl.java b/briar-android/src/org/briarproject/android/AndroidExecutorImpl.java
index 5d9c4709156887957a8112ebb43abae5790ba85d..079df65e2e337c60f888a9ce4dcd0a789ab3442b 100644
--- a/briar-android/src/org/briarproject/android/AndroidExecutorImpl.java
+++ b/briar-android/src/org/briarproject/android/AndroidExecutorImpl.java
@@ -6,6 +6,7 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
@@ -19,6 +20,9 @@ class AndroidExecutorImpl implements AndroidExecutor {
 
 	private static final int SHUTDOWN = 0, RUN = 1;
 
+	private static final Logger LOG =
+			Logger.getLogger(AndroidExecutorImpl.class.getName());
+
 	private final Runnable loop;
 	private final AtomicBoolean started = new AtomicBoolean(false);
 	private final CountDownLatch startLatch = new CountDownLatch(1);
@@ -43,6 +47,7 @@ class AndroidExecutorImpl implements AndroidExecutor {
 		try {
 			startLatch.await();
 		} catch(InterruptedException e) {
+			LOG.warning("Interrupted while starting executor thread");
 			Thread.currentThread().interrupt();
 		}
 	}
diff --git a/briar-android/src/org/briarproject/android/BriarActivity.java b/briar-android/src/org/briarproject/android/BriarActivity.java
index 43305d5d5aefe20f6d6a5745dcaa2d26426af387..a80e276b1fddd25d6fa7a4cbdb789d0037b0b358 100644
--- a/briar-android/src/org/briarproject/android/BriarActivity.java
+++ b/briar-android/src/org/briarproject/android/BriarActivity.java
@@ -92,6 +92,7 @@ public class BriarActivity extends RoboFragmentActivity {
 					service.waitForShutdown();
 				} catch(InterruptedException e) {
 					LOG.warning("Interrupted while waiting for service");
+					Thread.currentThread().interrupt();
 				}
 				finishAndExit();
 			}
diff --git a/briar-android/src/org/briarproject/android/TestingActivity.java b/briar-android/src/org/briarproject/android/TestingActivity.java
index 3889f82d392bf2818ac3d35246b3f1d5c0bfd748..076d29f0aa1ba5bcdf792854dbe567efb2d9ad28 100644
--- a/briar-android/src/org/briarproject/android/TestingActivity.java
+++ b/briar-android/src/org/briarproject/android/TestingActivity.java
@@ -261,7 +261,8 @@ public class TestingActivity extends BriarActivity implements OnClickListener {
 				}
 			});
 		} catch(InterruptedException e) {
-			if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
+			LOG.warning("Interrupted while getting BluetoothAdapter");
+			Thread.currentThread().interrupt();
 		} catch(ExecutionException e) {
 			if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
 		}
diff --git a/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
index acc2ffc107d2dcb02d1f0ff377ce18a78133bcd7..c44ddf5a4246eb14118572bb7a92f3b2e073ca0a 100644
--- a/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
+++ b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
@@ -110,7 +110,8 @@ class DroidtoothPlugin implements DuplexPlugin {
 				}
 			});
 		} catch(InterruptedException e) {
-			throw new IOException(e.toString());
+			Thread.currentThread().interrupt();
+			throw new IOException("Interrupted while getting BluetoothAdapter");
 		} catch(ExecutionException e) {
 			throw new IOException(e.toString());
 		}
@@ -427,6 +428,7 @@ class DroidtoothPlugin implements DuplexPlugin {
 					addresses = discoverDevices(end - now);
 				} catch(InterruptedException e) {
 					LOG.warning("Interrupted while discovering devices");
+					Thread.currentThread().interrupt();
 					return;
 				}
 				// Connect to any device with the right UUID
diff --git a/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
index 0c4e515cd4000acad2f97fea0b09baf210f58fc4..18aa76010482f0b1a3cb3b2267b5438178d8ffb1 100644
--- a/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
+++ b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
@@ -178,6 +178,7 @@ class TorPlugin implements DuplexPlugin, EventHandler {
 				}
 			} catch(InterruptedException e1) {
 				LOG.warning("Interrupted while starting Tor");
+				Thread.currentThread().interrupt();
 				return false;
 			}
 			// Now we should be able to connect to the new process
@@ -471,6 +472,8 @@ class TorPlugin implements DuplexPlugin, EventHandler {
 				if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
 			} catch(InterruptedException e) {
 				LOG.warning("Interrupted while creating hidden service");
+				Thread.currentThread().interrupt();
+				return;
 			}
 		}
 		// Publish the hidden service's onion hostname in transport properties
diff --git a/briar-core/src/org/briarproject/invitation/ConnectorGroup.java b/briar-core/src/org/briarproject/invitation/ConnectorGroup.java
index abc4a9ecc8cc8c187da47868325c4b69aafbda4e..7ce73fcc85c620788d74c66ad5950d1785335127 100644
--- a/briar-core/src/org/briarproject/invitation/ConnectorGroup.java
+++ b/briar-core/src/org/briarproject/invitation/ConnectorGroup.java
@@ -159,6 +159,7 @@ class ConnectorGroup extends Thread implements InvitationTask {
 			for(Connector c : connectors) c.join();
 		} catch(InterruptedException e) {
 			LOG.warning("Interrupted while waiting for connectors");
+			Thread.currentThread().interrupt();
 		}
 		// If none of the threads connected, inform the listeners
 		if(!connected.get()) {
diff --git a/briar-core/src/org/briarproject/messaging/duplex/DuplexConnection.java b/briar-core/src/org/briarproject/messaging/duplex/DuplexConnection.java
index 853249cf6d38ef3cf3a1029fe828d128ad0c617e..06d4758045befa69b465357ba3770f888866126e 100644
--- a/briar-core/src/org/briarproject/messaging/duplex/DuplexConnection.java
+++ b/briar-core/src/org/briarproject/messaging/duplex/DuplexConnection.java
@@ -252,6 +252,7 @@ abstract class DuplexConnection implements EventListener {
 			}
 		} catch(InterruptedException e) {
 			LOG.warning("Interrupted while waiting for task");
+			Thread.currentThread().interrupt();
 			dispose(true, true);
 		} catch(IOException e) {
 			if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);