Personal patches
Go to file
Xin LI 074f0333fe MFH: r539379
databases/lmdb: in db_env_close0(), destroy robust mutexes if we are
the only remaining user.

When closing an lmdb database, all memory and file descriptor resources
are released, including the shared memory pages that contained the
robust mutex.

However, before this commit, prior to unmapping the pages that contained
the robust mutexex, lmdb did not destroy the mutexes first.  This would
create a problem when an application opens and closes a database, then
open it again.

According to libthr(3), by default, a shared lock backed by a mapped
file in memory is automatically destroyed on the last unmap of the
corresponding file' page, which is allowed by POSIX.

After unmapping the shared pages, the kernel writes off all active
robust mutexes associated with these pages.  However, the userland
threading library still keeps the record (pshared_lookup in
thr_pshared.c of libthr) for these objects as they are not really
destroyed before, so that it don't have to ask the kernel every
time when looking them up.

Now, a later re-open of the database might have mapped the lock file
to the same memory location.  Because the threading library have
remembered the robust mutex object, it would just reuse it even though
it was already invalid from kernel's point of view.  Unfortunately,
regular lock operations would still work for this process.

Should another lmdb process opens the same database, it would attempt
to obtain the robust mutex (no longer recognized by kernel) because it
would see another process holding a file lock, but that would fail
because the robust mutex is invalid for the kernel.

Explicitly destroy the mutex if we are the last remaining user to ensure
the mutex is always in a known defined state.

OpenLDAP ITS #9278

With debugging help from:	kib
PR:				244493
Approved by:			ports-secteam
2020-06-16 21:54:58 +00:00
accessibility Make some implicit KDE dependencies explicit 2020-03-14 19:03:35 +00:00
arabic
archivers MFH: r533061 r533062 2020-04-26 13:55:30 +00:00
astro MFH: r537132 2020-05-31 08:58:31 +00:00
audio MFH: r536706 2020-06-15 13:21:23 +00:00
base Update instructions to use freebsd-gcc6 packages. 2020-01-03 21:09:18 +00:00
benchmarks MFH: r537135 2020-05-31 09:13:18 +00:00
biology MFH: r535507 2020-05-26 01:02:38 +00:00
cad MFH: r536928 2020-05-29 04:38:43 +00:00
chinese MFH: r534850 2020-05-10 13:56:17 +00:00
comms MFH: r534998 2020-05-12 17:42:29 +00:00
converters Fix yj entry 2020-04-01 07:31:47 +00:00
databases MFH: r539379 2020-06-16 21:54:58 +00:00
deskutils MFH: r531758 2020-04-15 14:55:03 +00:00
devel MFH: r538341 2020-06-09 20:43:04 +00:00
dns MFH: r536929 2020-05-29 04:53:50 +00:00
editors MFH: r538235 2020-06-08 17:31:11 +00:00
emulators MFH: r539304 2020-06-16 00:56:17 +00:00
finance MFH: r530876 2020-04-06 11:51:57 +00:00
french MFH: r534850 2020-05-10 13:56:17 +00:00
ftp Update LIBSSH2 option description 2020-04-01 18:07:17 +00:00
games MFH: r536935 2020-05-29 05:06:03 +00:00
german MFH: r534850 2020-05-10 13:56:17 +00:00
graphics MFH: r538813 2020-06-14 15:33:39 +00:00
hebrew
hungarian
irc New port: irc/birch: IRC client written in bash 2020-03-31 00:27:07 +00:00
japanese MFH: r534850 2020-05-10 13:56:17 +00:00
java MFH: r536386 2020-05-24 11:32:40 +00:00
Keywords
korean Remove expired ports: 2020-03-01 17:19:40 +00:00
lang MFH: r536770 r536776 r538670 2020-06-15 11:22:38 +00:00
mail MFH: r539321 2020-06-16 14:04:20 +00:00
math MFH: r538414 2020-06-10 17:58:10 +00:00
misc MFH: r539356 2020-06-16 15:37:32 +00:00
Mk MFH: r536538 r536713 r537007 2020-06-01 23:22:43 +00:00
multimedia MFH: r538264 2020-06-08 22:26:05 +00:00
net MFH: r531462 r533307 2020-06-01 08:35:19 +00:00
net-im MFH: r533398 r536194 2020-05-22 10:43:03 +00:00
net-mgmt MFH: r538884 2020-06-15 15:09:01 +00:00
net-p2p MFH: r537033 2020-05-30 03:11:29 +00:00
news MFH: r533061 r533062 2020-04-26 13:55:30 +00:00
polish Update to 20200320 2020-03-28 13:33:25 +00:00
ports-mgmt ports-mgmt/psearch: fix build on GCC architectures 2020-03-29 21:26:32 +00:00
portuguese Remove expired ports: 2020-03-01 17:19:40 +00:00
print MFH: r537613 2020-06-03 12:43:27 +00:00
russian MFH: r534850 2020-05-10 13:56:17 +00:00
science MFH: r535705 2020-05-26 01:42:51 +00:00
security MFH: r532735 2020-06-12 15:34:57 +00:00
shells shells/git-prompt.zsh: Update to version 2.3.0 2020-03-20 03:00:27 +00:00
sysutils MFH: r538456 2020-06-11 12:24:57 +00:00
Templates Add LOCALBASE/share/man to the valid path for manpages 2020-01-15 12:06:13 +00:00
textproc MFH: r532715 2020-04-23 22:56:29 +00:00
Tools Tools/scripts/sed_checked.sh: reword sed warning 2020-01-12 12:06:52 +00:00
ukrainian
vietnamese
www MFH: r538347 2020-06-09 21:40:45 +00:00
x11 MFH: r537035 2020-05-30 23:04:12 +00:00
x11-clocks Mark MAKE_JOBS_UNSAFE 2020-03-28 11:02:36 +00:00
x11-drivers MFH: r533211 2020-04-29 20:03:44 +00:00
x11-fm Update thunar to 1.8.14 2020-03-25 21:05:30 +00:00
x11-fonts MFH: r534715 2020-05-09 07:04:53 +00:00
x11-servers MFH: r538048 2020-06-09 16:25:32 +00:00
x11-themes MFH: r531747 2020-04-15 07:40:27 +00:00
x11-toolkits MFH: r538138 2020-06-07 01:38:15 +00:00
x11-wm MFH: r538818 2020-06-15 17:50:27 +00:00
.arcconfig
.gitattributes
.gitauthors .gitauthors: Chase update for se 2020-04-01 12:05:54 +00:00
.gitignore
.gitmessage
CHANGES Document the changes regarding the manpage location 2020-01-15 12:08:21 +00:00
CONTRIBUTING.md
COPYRIGHT Happy New Year 2020! 2019-12-31 16:05:08 +00:00
GIDs Update sonarqube ports to the most revent version: 2020-03-26 10:03:49 +00:00
LEGAL Resurrect biology/linux-foldingathome 2020-03-21 23:03:05 +00:00
Makefile
MOVED Remove expired ports: 2020-05-15 16:42:41 +00:00
README
UIDs Update sonarqube ports to the most revent version: 2020-03-26 10:03:49 +00:00
UPDATING MFH: r533244 2020-04-28 12:16:39 +00:00

This is the FreeBSD Ports Collection.  For an easy to use
WEB-based interface to it, please see:

	https://www.FreeBSD.org/ports

For general information on the Ports Collection, please see the
FreeBSD Handbook ports section which is available from:

	https://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/ports.html
		for the latest official version
	or:
	The ports(7) manual page (man ports).

These will explain how to use ports and packages.

If you would like to search for a port, you can do so easily by
saying (in /usr/ports):

	make search name="<name>"
	or:
	make search key="<keyword>"

which will generate a list of all ports matching <name> or <keyword>.
make search also supports wildcards, such as:

	make search name="gtk*"

For information about contributing to FreeBSD ports, please see the Porter's
Handbook, available at:

	https://www.FreeBSD.org/doc/en_US.ISO8859-1/books/porters-handbook/

NOTE:  This tree will GROW significantly in size during normal usage!
The distribution tar files can and do accumulate in /usr/ports/distfiles,
and the individual ports will also use up lots of space in their work
subdirectories unless you remember to "make clean" after you're done
building a given port.  /usr/ports/distfiles can also be periodically
cleaned without ill-effect.