diff --git a/hk2-locator/src/main/java/org/jvnet/hk2/internal/ServiceLocatorImpl.java b/hk2-locator/src/main/java/org/jvnet/hk2/internal/ServiceLocatorImpl.java
index aff4e3b..4f872d5 100755
--- a/hk2-locator/src/main/java/org/jvnet/hk2/internal/ServiceLocatorImpl.java
+++ b/hk2-locator/src/main/java/org/jvnet/hk2/internal/ServiceLocatorImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -31,6 +31,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -871,14 +872,19 @@
         wLock.lock();
         try {
             if (state.equals(ServiceLocatorState.SHUTDOWN)) return;
-            
-            for (ServiceLocatorImpl child : children.keySet()) {
-                child.shutdown();
+
+            synchronized(children) {
+                for (Iterator<ServiceLocatorImpl> childIterator = children.keySet().iterator(); childIterator.hasNext();) {
+                    ServiceLocatorImpl child = childIterator.next();
+                    childIterator.remove();
+                    child.shutdown();
+                }
             }
 
             if (parent != null) {
                 parent.removeChild(this);
             }
+
         }
         finally {
             wLock.unlock();
diff --git a/hk2-locator/src/test/java/org/glassfish/hk2/tests/locator/children/ChildServiceLocatorTest.java b/hk2-locator/src/test/java/org/glassfish/hk2/tests/locator/children/ChildServiceLocatorTest.java
index db1810e..398fd7b 100644
--- a/hk2-locator/src/test/java/org/glassfish/hk2/tests/locator/children/ChildServiceLocatorTest.java
+++ b/hk2-locator/src/test/java/org/glassfish/hk2/tests/locator/children/ChildServiceLocatorTest.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2019 Payara Services Ltd.
+ * Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -33,9 +34,10 @@
     public void CreationTest() {
         ServiceLocator parent = LocatorHelper.create();
         ServiceLocator child = LocatorHelper.create(parent);
+        ServiceLocator child2 = LocatorHelper.create(parent);
         parent.shutdown();
         Assert.assertEquals(child.getState(), ServiceLocatorState.SHUTDOWN);
-        
+        Assert.assertEquals(child2.getState(), ServiceLocatorState.SHUTDOWN);
     }
     
     
