opensource@gmx-topmail.de wrote:
Are you running multiple Docker instances on the same database? AFAIK that won't work because of Docker's munging with POSIX namespaces.No, it is a Single Docker instance. Actually, I saw the same thing happening on a Ubuntu box, so it should not be related to Docker. I restructured the CI tests and divided one big test suite into two. Funny thing is that the problem did not occur anymore as of now. One difference between the now separated tests was that they were using a different version of our lib.so (including the same version of LMDB however). But I hardly see how that might cause problems.
If you meant libc.so yeah, you can't do that. LMDB uses process-shared POSIX mutexes in shared memory. glibc has a fundamental (and unfixable) flaw; it doesn't guarantee compatibility for the internal structure of pthread_mutex_t types between library versions. You cannot safely mix glibc versions among multiple programs concurrently accessing the same LMDB environment.
Some details on the glibc issue here https://sourceware.org/bugzilla/show_bug.cgi?id=21119 It affects other libraries like BerkeleyDB too https://bugzilla.redhat.com/show_bug.cgi?id=1394862 -- -- Howard Chu CTO, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc/ Chief Architect, OpenLDAP http://www.openldap.org/project/