diff --git a/smi/src/nrt_system.c b/smi/src/nrt_system.c
index 7e8d71c18802b888d4ba8171c1a1cae593480949..7edfab37cf4d6217150b68f42ec5ca89e1c5b9e2 100644
--- a/smi/src/nrt_system.c
+++ b/smi/src/nrt_system.c
@@ -7,6 +7,8 @@
 #include <stdlib.h>
 #include <sys/io.h>
 #include <sys/resource.h>
+#include <limits.h>
+#include <signal.h>
 
 // UDP socket related
 #include <netdb.h>
@@ -375,6 +377,14 @@ int nrtSmi(char *esmFile, char *tssFile, char *tdeFile, char *cfgFile) {
 		printf("[nrtSmi] data type mismatch\n");
 		goto exit;
 	}
+
+	/* check size of sig_atomic_t type */
+	if (sizeof(sig_atomic_t)*CHAR_BIT<4*8)
+	{
+		error=4;
+		printf("[nrtSmi] atomic type size too small\n");
+		goto exit;
+	}
 	
 	printf("[nrtSmi] allocating system shared memory\n");
         if (initShm(&shm_fd,sizeof(shm_struct),(void *) &shm,SHM_FILE)!=0) {