https://bugs.openldap.org/show_bug.cgi?id=10198
--- Comment #1 from Benjamin Koch b.koch@beckhoff.com --- I think this mostly affects x64 (x86_64). My test program crashes for both but its buffer doesn't have the same padding. "sizeof(va_list)" is 4 bytes on 32-bit ("x86", i386), so the pointer falls within the padded buffer (5 KiB). It is 8 bytes on x64, so the pointer is outside of the buffer and exactly where the access violation is reported.
I have seen the real crash in LMDB only with x64 because my program won't fit into 32-bit address space, i.e. I cannot (easily) test this with 32-bit.
(The crash isn't completely reliable. My test program usually crashes but not always. It seems to be fine if I add enough padding. That's why I think that 32-bit might not see the crash. However, I cannot really be sure that it wouldn't crash if the previous contents of the uninitialized buffer were just right.)