diff --git a/org.eclipse.jdt.debug.tests/testprograms/Bug534319startBetwen.java b/org.eclipse.jdt.debug.tests/testprograms/Bug534319startBetwen.java
new file mode 100644
index 0000000..4b5b8fb
--- /dev/null
+++ b/org.eclipse.jdt.debug.tests/testprograms/Bug534319startBetwen.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Simeon Andreev and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Simeon Andreev - initial API and implementation
+ *******************************************************************************/
+
+public class Bug534319startBetwen {
+
+	public static void main(String[] args) {
+		sleep(500);
+		Thread t = new Thread(new Runnable() {
+			public void run() {
+				sleep(250);
+				breakpointMethod();
+			}
+		});
+
+		/*
+		 * Spawn threads, some stay, some sleep a bit and leave, hopefully catching problems in the add/remove logic of the Debug View.
+		 */
+		for (int i = 0; i < 30; i++) {
+			final int index = i;
+			new Thread(new Runnable() {
+				public void run() {
+					if (index % 3 == 1) {
+						while (true) {
+							sleep(250);
+						}
+					} else if (index % 2 == 1) {
+						sleep(250);
+					}
+				}
+			}).start();
+
+			if(index == 15) {
+				// we start thread with breakpoint IN BETWEEN all other threads are started
+				t.start();
+			}
+		}
+		sleep(500);
+	}
+
+	static void sleep(long ms) {
+		try {
+			Thread.sleep(ms);
+		} catch (InterruptedException e) {
+			// ignore
+		}
+	}
+
+	public static void breakpointMethod() {
+		System.out.println("set a breakpoint here");
+	}
+}
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java
index 78b9161..bfd3a57 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java
@@ -199,7 +199,7 @@
 			"org.eclipse.debug.tests.targets.HcrClass5", "org.eclipse.debug.tests.targets.HcrClass6", "org.eclipse.debug.tests.targets.HcrClass7", "org.eclipse.debug.tests.targets.HcrClass8",
 			"org.eclipse.debug.tests.targets.HcrClass9", "TestContributedStepFilterClass", "TerminateAll_01", "TerminateAll_02", "StepResult1",
 			"StepResult2", "StepResult3", "StepUncaught", "TriggerPoint_01", "BulkThreadCreationTest", "MethodExitAndException",
-			"Bug534319earlyStart", "Bug534319lateStart", "Bug534319singleThread" };
+			"Bug534319earlyStart", "Bug534319lateStart", "Bug534319singleThread", "Bug534319startBetwen" };
 
 	/**
 	 * the default timeout
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/DebugViewTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/DebugViewTests.java
index 88bc926..62bc66b 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/DebugViewTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/DebugViewTests.java
@@ -180,6 +180,14 @@
 		doTestWrongSelectionBug534319(iterations, typeName, breakpointMethodName);
 	}
 
+	public void testWrongSelectionBug534319startBetwen() throws Exception {
+		// Run a few times since the problem doesn't occur always
+		int iterations = 5;
+		final String typeName = "Bug534319startBetwen";
+		final String breakpointMethodName = "breakpointMethod";
+		doTestWrongSelectionBug534319(iterations, typeName, breakpointMethodName);
+	}
+
 	/**
 	 * Test for Bug 534319 - Debug View shows wrong information due to threads with short lifetime
 	 *
