diff --git a/tests/executables_src/testExceptionHandling.cc b/tests/executables_src/testExceptionHandling.cc
index aeedb91a808901daf6b50ae1e75fb862144ca3e4..d53c8b27343bf9ae2abccb83522ca9cc10fb44e7 100644
--- a/tests/executables_src/testExceptionHandling.cc
+++ b/tests/executables_src/testExceptionHandling.cc
@@ -432,10 +432,14 @@ BOOST_AUTO_TEST_CASE(testShutdown) {
   std::cout << "testShutdown" << std::endl;
   static const uint32_t DEFAULT = 55;
 
+  auto dummyBackend1 =
+      boost::dynamic_pointer_cast<ExceptionDummy>(ctk::BackendFactory::getInstance().createBackend(ExceptionDummyCDD1));
   auto dummyBackend2 =
       boost::dynamic_pointer_cast<ExceptionDummy>(ctk::BackendFactory::getInstance().createBackend(ExceptionDummyCDD2));
+  auto dummyBackend3 =
+      boost::dynamic_pointer_cast<ExceptionDummy>(ctk::BackendFactory::getInstance().createBackend(ExceptionDummyCDD3));
 
-  //Test that the application does shut down with a broken device and blocking accessors
+  // Test that the application does shut down with a broken device and blocking accessors
   TestApplication2 app;
   ctk::TestFacility test(false); // test facility without testable mode
 
@@ -451,6 +455,7 @@ BOOST_AUTO_TEST_CASE(testShutdown) {
   test.setScalarDefault("/Device2/FixedPoint/value", static_cast<double>(DEFAULT));
   test.setScalarDefault("/Device2/Deep/Hierarchies/Need/Tests/As/well", static_cast<int32_t>(DEFAULT));
   test.setScalarDefault("/Device2/Deep/Hierarchies/Need/Another/test", static_cast<int32_t>(DEFAULT));
+  test.setScalarDefault("/Device3/MODULE/REG4", static_cast<int32_t>(DEFAULT));
 
   test.runApplication();
 
@@ -463,11 +468,13 @@ BOOST_AUTO_TEST_CASE(testShutdown) {
   CHECK_TIMEOUT(dummyBackend2->getRawAccessor("Integers", "signed8") == static_cast<int8_t>(DEFAULT), 10000);
   CHECK_TIMEOUT(dummyBackend2->getRawAccessor("Integers", "unsigned8") == static_cast<uint8_t>(DEFAULT), 10000);
   CHECK_TIMEOUT(dummyBackend2->getRawAccessor("FixedPoint", "value") == 14080, 10000);
-  CHECK_TIMEOUT(dummyBackend2->getRawAccessor("Deep/Hierarchies/Need/Tests/As", "well") == static_cast<int32_t>(DEFAULT), 10000);
-  CHECK_TIMEOUT(dummyBackend2->getRawAccessor("Deep/Hierarchies/Need/Another", "test") == static_cast<int32_t>(DEFAULT), 10000);
-
+  CHECK_TIMEOUT(
+      dummyBackend2->getRawAccessor("Deep/Hierarchies/Need/Tests/As", "well") == static_cast<int32_t>(DEFAULT), 10000);
+  CHECK_TIMEOUT(
+      dummyBackend2->getRawAccessor("Deep/Hierarchies/Need/Another", "test") == static_cast<int32_t>(DEFAULT), 10000);
+  CHECK_TIMEOUT(dummyBackend3->getRawAccessor("MODULE", "REG4") == static_cast<int32_t>(DEFAULT), 10000);
 
-  //Wait for the devices to come up.
+  // Wait for the devices to come up.
   CHECK_EQUAL_TIMEOUT(
       test.readScalar<int32_t>(ctk::RegisterPath("/Devices") / ExceptionDummyCDD1 / "status"), 0, 10000);
   CHECK_EQUAL_TIMEOUT(
@@ -498,8 +505,6 @@ BOOST_AUTO_TEST_CASE(testShutdown) {
   // device 2 successfully broken!
 
   // block the output accessor of "outputModule
-  auto dummyBackend1 =
-      boost::dynamic_pointer_cast<ExceptionDummy>(ctk::BackendFactory::getInstance().createBackend(ExceptionDummyCDD1));
   dummyBackend1->throwExceptionWrite = true;
   dummyBackend1->throwExceptionRead = true;
 
@@ -517,9 +522,8 @@ BOOST_AUTO_TEST_CASE(testShutdown) {
 
   // device 1 successfully broken!
 
-  auto dummyBackend3 =
-      boost::dynamic_pointer_cast<ExceptionDummy>(ctk::BackendFactory::getInstance().createBackend(ExceptionDummyCDD3));
-  dummyBackend3->throwExceptionWrite = true;
+  dummyBackend3->throwExceptionWrite =
+      false; // do not set to true, otherwise there is a race condition whether the read or the write in RealisticModule::mainLoop() triggers the exception
   dummyBackend3->throwExceptionRead = true;
 
   auto triggerRealistic = test.getScalar<int32_t>("/triggerRealistic");