[Date Prev][Date Next]
Re: (ITS#8394) LMDB fails GCC5 without -fno-strict-aliasing
- To: openldap-its@OpenLDAP.org
- Subject: Re: (ITS#8394) LMDB fails GCC5 without -fno-strict-aliasing
- From: email@example.com
- Date: Mon, 04 Apr 2016 16:30:47 +0000
- Auto-submitted: auto-generated (OpenLDAP-ITS)
My initial report was garbled.
What I mean is that a protection violation occurs in mdb.c when I add a
13'th item to a multiset and I compile with one of the mentioned
compilers and with -fPIC -O3. The code works fine when compiled with
older GCC compilers or with -O0 or with -fno-strict-aliasing.
Given what I read at https://gcc.gnu.org/bugs/ under section "Casting
does not work as expected when optimization is turned on", I suspect the
problem is simply that a pointer variable is not following the ISO C
aliasing rules and breaks with the new, more aggressive compiler
Here is the part that fails:
for (i=0; i<NUMKEYS(fp); i++)
mp->mp_ptrs[i] = fp->mp_ptrs[i] + offset;
If this turns out to not be straightforward, I can try building a small
test program to reproduce the problem.
On 04/03/2016 09:44 AM, Howard Chu wrote:
> firstname.lastname@example.org wrote:
>> Full_Name: Bruce Allen
>> Version: 2.4.44
>> OS: Fedora 23
>> URL: ftp://ftp.openldap.org/incoming/
>> Submission from: (NULL) (126.96.36.199)
>> LMDB v0.9.18 crashes with segmentation fault in mdb.c line 6590 when
>> using these compilers:
>> * gcc (GCC) 5.3.1 20151207 (Red Hat 5.3.1-2)
>> * x86_64-w64-mingw32-gcc (GCC) 5.2.0 20150716 (Fedora MinGW
>> The crash happens afterrititing the 12'th item (with the same key but
>> value using flags MDB_NODUPDATA and MDB_DUPSORT).
> Your message appears garbled here. Please send a test case with steps
> to reproduce.
>> The problem goes away when compiling mdb.c with the
>> -fno-strict-aliasing flag.