diff --git a/framework/src/main/java/org/apache/felix/framework/DTOFactory.java b/framework/src/main/java/org/apache/felix/framework/DTOFactory.java
index 3fba318..2107a5a 100644
--- a/framework/src/main/java/org/apache/felix/framework/DTOFactory.java
+++ b/framework/src/main/java/org/apache/felix/framework/DTOFactory.java
@@ -27,6 +27,7 @@
 
 import org.osgi.dto.DTO;
 import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
@@ -313,6 +314,10 @@
 
     private static ServiceReferenceDTO[] createServiceReferenceDTOArray(Bundle bundle)
     {
+        BundleContext ctx = bundle.getBundleContext();
+        if (ctx == null)
+            return null;
+
         ServiceReference<?>[] svcs = bundle.getRegisteredServices();
         if (svcs == null)
             return new ServiceReferenceDTO[0];
diff --git a/framework/src/test/java/org/apache/felix/framework/DTOFactoryTest.java b/framework/src/test/java/org/apache/felix/framework/DTOFactoryTest.java
index fc897bf..4365835 100644
--- a/framework/src/test/java/org/apache/felix/framework/DTOFactoryTest.java
+++ b/framework/src/test/java/org/apache/felix/framework/DTOFactoryTest.java
@@ -19,6 +19,7 @@
 package org.apache.felix.framework;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import java.io.ByteArrayInputStream;
@@ -31,7 +32,6 @@
 import java.util.jar.JarOutputStream;
 import java.util.jar.Manifest;
 
-import org.apache.felix.framework.Felix;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -130,6 +130,24 @@
     }
 
     @Test
+    public void testServiceReferenceDTOArrayStoppedBundle() throws Exception
+    {
+        String mf = "Bundle-SymbolicName: tb2\n"
+                + "Bundle-Version: 1.2.3\n"
+                + "Bundle-ManifestVersion: 2\n"
+                + "Import-Package: org.osgi.framework;version=\"[1.1,2)\"";
+        File bf = createBundle(mf);
+        Bundle bundle = framework.getBundleContext().installBundle(bf.toURI().toURL().toExternalForm());
+
+        assertNull("Precondition", bundle.getBundleContext());
+        ServiceReferenceDTO[] dtos = bundle.adapt(ServiceReferenceDTO[].class);
+
+        // Note this is incorrectly tested by the Core Framework R6 CT, which expects an
+        // empty array. However this is not correct and recorded as a deviation.
+        assertNull("As the bundle is not started, the dtos should be null", dtos);
+    }
+
+    @Test
     public void testBundleRevisionDTO() throws Exception
     {
         String mf = "Bundle-SymbolicName: tb2\n"
