https://bugs.openldap.org/show_bug.cgi?id=9278
--- Comment #11 from Xin Li delphij@freebsd.org --- (In reply to Howard Chu from comment #8)
(In reply to Xin Li from comment #7)
(In reply to Howard Chu from comment #6)
(In reply to Xin Li from comment #5)
(In reply to Howard Chu from comment #4)
(In reply to Xin Li from comment #3)
Created attachment 738 [details]
Last time I checked, FreeBSD didn't even support robust process shared mutexes. What OS revision is required for this to be supported?
The support of robust mutexes was added in FreeBSD r300043 (May 17, 2016) and is supported by all currently supported FreeBSD releases (11.3, 11.4 and 12.1). The first release with robust mutex support was FreeBSD 11.0-RELEASE (October 2016).
Is there a macro we can test, that includes the FreeBSD release number?
Yes, normally we would check __FreeBSD_version which is defined in sys/param.h.
The feature was introduced in r300043, but unfortunately __FreeBSD_version was not bumped at the time, so we can use the value in r300207 which is the first bump after that revision. In the code that would be something like:
#if defined(__FreeBSD_version) && __FreeBSD_version >= 1100110
(Note that this is really old version of FreeBSD, all non-EoL'ed FreeBSD releases supports this feature).
Thanks. Patched in mdb.master and mdb.RE/0.9, please test.
I've build with mdb.master (2fd44e325195ae81664eb5dc36e7d265927c5ebc) on FreeBSD 13.0-CURRENT and it have corrected the issue. 'make test' in lmdb also seems to be working fine, thanks!