On 2017-04-07 19:55:21 -0300, Alvaro Herrera wrote:
> Andres Freund wrote:
> > Improve 64bit atomics support.
> >
> > When adding atomics back in b64d92f1a, I added 64bit support as
> > optional; there wasn't yet a direct user in sight. That turned out to
> > be a bit short-sighted, it'd already have been useful a number of times.
>
> Seems like this killed an arapaima:
> https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=arapaima&dt=2017-04-07%2022%3A06%3A59
>
> Program terminated with signal 6, Aborted.
> #0 0x00c6a402 in __kernel_vsyscall ()
> #0 0x00c6a402 in __kernel_vsyscall ()
> #1 0x00284b10 in raise () from /lib/libc.so.6
> #2 0x00286421 in abort () from /lib/libc.so.6
> #3 0x084d967e in ExceptionalCondition (
> conditionName=0xe19dac "(((uintptr_t) ((uintptr_t)(ptr)) + ((8) - 1)) & ~((uintptr_t) ((8) - 1))) !=
(uintptr_t)(ptr)",
> errorType=0xe19831 "UnalignedPointer",
> fileName=0xe19d88 "../../../src/include/port/atomics.h", lineNumber=428)
> at assert.c:54
> #4 0x00e189b0 in pg_atomic_init_u64 ()
> at ../../../src/include/port/atomics.h:428
Gah, that's fairly annoying :(. We can't trivially force alignment in
the generic fallback case, because not all compilers support that. We
don't really need it the fallback case, because things are protected by
a lock - but that means we'll have to make a bunch of locks conditional
:/
Greetings,
Andres Freund