diff --git a/src/ChangeLog b/src/ChangeLog
index 7324e193ec55aa27fab7823842dc6808c7129993..930a9c0ccc749289a3dfbf3545bef2202c065a09 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+Tue Jun 17 04:20:20 1997  Fredrik Hubinette  <hubbe@cytocin.hubbe.net>
+
+	* SIGUSR1 and SIGUSR2 are now masked out on linux systems
+	  with threads. (Because the thread functions use them.)
+
 Tue Jun 10 12:21:07 1997  Henrik Grubbstr�m  <grubba@infovav.se>
 
 	* lib/modules/Process.pmod (exec): Fixed path-handling bug.
diff --git a/src/signal_handler.c b/src/signal_handler.c
index ff8aba423641ca5c3599ff9164a271d998a50b9c..2ff2103b9ffaa30a5985acc235475bb57991d3e6 100644
--- a/src/signal_handler.c
+++ b/src/signal_handler.c
@@ -83,15 +83,19 @@ static struct sigdesc signal_desc []={
 #ifdef SIGKILL
   { SIGKILL, "SIGKILL" },
 #endif
+
+#if !defined(__linux__) || !defined(_REENTRANT)
 #ifdef SIGUSR1
   { SIGUSR1, "SIGUSR1" },
 #endif
-#ifdef SIGSEGV
-  { SIGSEGV, "SIGSEGV" },
-#endif
 #ifdef SIGUSR2
   { SIGUSR2, "SIGUSR2" },
 #endif
+#endif
+
+#ifdef SIGSEGV
+  { SIGSEGV, "SIGSEGV" },
+#endif
 #ifdef SIGPIPE
   { SIGPIPE, "SIGPIPE" },
 #endif
@@ -316,7 +320,13 @@ static void f_signal(int args)
   }
 
   signum=sp[-args].u.integer;
-  if(signum <0 || signum >=MAX_SIGNALS)
+  if(signum <0 ||
+     signum >=MAX_SIGNALS
+#if defined(__linux__) && defined(_REENTRANT)
+     || signum == SIGUSR1
+     || signum == SIGUSR2
+#endif
+    )
   {
     error("Signal out of range.\n");
   }