kern/131597: [kernel] c++ exceptions very slow on FreeBSD 7.1/amd64

Kostik Belousov kostikbel at gmail.com
Sun Aug 29 12:00:24 UTC 2010


The following reply was made to PR kern/131597; it has been noted by GNATS.

From: Kostik Belousov <kostikbel at gmail.com>
To: David Xu <davidxu at freebsd.org>
Cc: bug-followup at freebsd.org, guillaume at morinfr.org,
        John Baldwin <jhb at freebsd.org>
Subject: Re: kern/131597: [kernel] c++ exceptions very slow on FreeBSD 7.1/amd64
Date: Sun, 29 Aug 2010 14:57:56 +0300

 --siH5g6X9/kbebbtM
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 Content-Transfer-Encoding: quoted-printable
 
 On Sun, Aug 29, 2010 at 02:55:32PM +0800, David Xu wrote:
 > Without the previous signal wrapper patch I posted (I am not sure
 > I will use it, because it is too complex),  I think there is another way
 > to avoid sigprocmask,  I have ever written a system call
 >=20
 > sc_shared_t	*schedctl(void);
 >=20
 >=20
 > which returns shared data area between userland and kernel.
 > userland code sets a flag in the data area to disable signal delivering.
 > when kernel code wants to deliver signal, it also checks the flag,  and
 > does not deliver signals if the flag is set, then the problem would be=20
 > fixed:
 > http://people.freebsd.org/~davidxu/schedctl/
 >=20
 I only skimmed over the (incomplete) change. It seems it has issues
 with rfork(). In particular, when shared vm space between two processes
 becomes forked.
 
 Also, it is not clear to me what would happen if the shared page paged
 out or user mode explicitely unmap(2) the shared region. At least the kernel
 mapping should be invalidated, otherwise kernel might modify random memory.
 
 I do not like the idea of using additional non-observable state bits,
 in addition to the signal mask, to block the signal delivery. IMHO, it
 subverts the signal mechanism, and, in case of memory corruption, makes
 debugging too hard.
 
 --siH5g6X9/kbebbtM
 Content-Type: application/pgp-signature
 Content-Disposition: inline
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.10 (FreeBSD)
 
 iEYEARECAAYFAkx6S0QACgkQC3+MBN1Mb4iR0ACgvk00JTKvHNa01CmoJCJCeT+D
 8F8An0rCa1Z3ZbLlLgi1UC8ICZCxczv0
 =LWTr
 -----END PGP SIGNATURE-----
 
 --siH5g6X9/kbebbtM--


More information about the freebsd-bugs mailing list