diff --git a/examples/ClientTests/CMakeLists.txt b/examples/ClientTests/CMakeLists.txt
index a32a0cc97..a6b208cda 100644
--- a/examples/ClientTests/CMakeLists.txt
+++ b/examples/ClientTests/CMakeLists.txt
@@ -469,6 +469,15 @@ dd4hep_add_test_reg( box_shape_build_type
REGEX_FAIL "Exception;EXCEPTION;ERROR"
)
#
+# Test interrupt handling in the middle of the geometry construction
+dd4hep_add_test_reg( ClientTests_interrupt_geometry_construction
+ COMMAND "${CMAKE_INSTALL_PREFIX}/bin/run_test_ClientTests.sh"
+ EXEC_ARGS geoDisplay -compact ${ClientTestsEx_INSTALL}/compact/InterruptTrigger.xml
+ -load -print INFO
+ REGEX_PASS "\\+\\+\\+ Caught signal: 2 context: 0xfeedbabe. exit process."
+ REGEX_FAIL "Exception;EXCEPTION;ERROR"
+)
+#
# EXEC_ARGS test_with_root.sh ${script}
#
if (DD4HEP_USE_GEANT4)
diff --git a/examples/ClientTests/compact/InterruptTrigger.xml b/examples/ClientTests/compact/InterruptTrigger.xml
new file mode 100644
index 000000000..3cc6512b6
--- /dev/null
+++ b/examples/ClientTests/compact/InterruptTrigger.xml
@@ -0,0 +1,104 @@
+
+
+
+
+
+ Alignment test with 2 simple boxes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ system:8,x:24:-12,y:-12
+
+
+
+ system:8,x:24:-12,y:-12
+
+
+
+
+
+
+
+
+
diff --git a/examples/ClientTests/src/InterruptTrigger.cpp b/examples/ClientTests/src/InterruptTrigger.cpp
new file mode 100644
index 000000000..43b664cec
--- /dev/null
+++ b/examples/ClientTests/src/InterruptTrigger.cpp
@@ -0,0 +1,50 @@
+//==========================================================================
+// AIDA Detector description implementation
+//--------------------------------------------------------------------------
+// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
+// All rights reserved.
+//
+// For the licensing terms see $DD4hepINSTALL/LICENSE.
+// For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
+//
+// Author : M.Frank
+//
+//==========================================================================
+
+// Framework includes
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/SignalHandler.h"
+#include "DD4hep/Printout.h"
+
+// C/C++ include files
+#include
+#include
+#include
+
+using namespace dd4hep;
+
+static bool signal_handler(void* user_context, int signal) {
+ printout(ALWAYS,"SignalHandler",
+ "+++ Caught signal: %d context: %p. exit process.",
+ signal, user_context);
+ ::fflush(stdout);
+ ::exit(EINVAL);
+ return true;
+}
+
+static Ref_t create_detector(Detector& , xml_h e, SensitiveDetector ) {
+ // XML detector object: DDCore/XML/XMLDetector.h
+ xml_dim_t x_det = e;
+ //Create the DetElement for dd4hep
+ DetElement d_det(x_det.nameStr(),x_det.id());
+
+ SignalHandler handler;
+ handler.registerHandler(SIGINT, (void*)0xFEEDBABE, signal_handler);
+
+ printout(ALWAYS,"SignalTrigger","+++ Sending interrupt signal to self...");
+ ::kill(::getpid(), SIGINT);
+
+ return d_det;
+}
+
+DECLARE_DETELEMENT(InterruptTrigger,create_detector)