Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Jan 2000 11:27:28 -0800 (PST)
From:      John Polstra <jdp@polstra.com>
To:        current@freebsd.org
Subject:   Re: rtld-elf, java + tya
Message-ID:  <200001231927.LAA19042@vashon.polstra.com>
In-Reply-To: <Pine.BSF.4.21.0001211839110.67324-100000@iclub.nsu.ru>
References:  <Pine.BSF.4.21.0001211839110.67324-100000@iclub.nsu.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
> ld-elf.so.1: assert failed: /usr/src/libexec/rtld-elf/lockdflt.c:55

If any of you can reproduce this problem fairly reliably, please try
the appended patch for "src/libexec/rtld-elf/lockdflt.c" and let me
know if it solves the problem.

Thanks,
John

Index: lockdflt.c
===================================================================
RCS file: /home/ncvs/src/libexec/rtld-elf/lockdflt.c,v
retrieving revision 1.3
diff -u -r1.3 lockdflt.c
--- lockdflt.c	2000/01/09 21:13:48	1.3
+++ lockdflt.c	2000/01/23 19:03:26
@@ -28,10 +28,9 @@
 /*
  * Default thread locking implementation for the dynamic linker.  It
  * is used until the client registers a different implementation with
- * dllockinit().  The default implementation does mutual exclusion
- * by blocking the SIGVTALRM, SIGPROF, and SIGALRM signals.  This is
- * based on the observation that most userland thread packages use one
- * of these signals to support preemption.
+ * dllockinit().  The default implementation does mutual exclusion by
+ * blocking almost all signals.  This is based on the observation that
+ * most userland thread packages use signals to support preemption.
  */
 
 #include <dlfcn.h>
@@ -63,10 +62,13 @@
 
     l = NEW(LockDflt);
     l->depth = 0;
-    sigemptyset(&l->lock_mask);
-    sigaddset(&l->lock_mask, SIGVTALRM);
-    sigaddset(&l->lock_mask, SIGPROF);
-    sigaddset(&l->lock_mask, SIGALRM);
+    sigfillset(&l->lock_mask);
+    sigdelset(&l->lock_mask, SIGTRAP);
+    sigdelset(&l->lock_mask, SIGABRT);
+    sigdelset(&l->lock_mask, SIGBUS);
+    sigdelset(&l->lock_mask, SIGSEGV);
+    sigdelset(&l->lock_mask, SIGKILL);
+    sigdelset(&l->lock_mask, SIGSTOP);
     return l;
 }
 


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001231927.LAA19042>