[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: SIGSEGV on mdb_txn_begin / __pthread_mutex_lock_full



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/