Gregory Stark <stark@enterprisedb.com> writes:
> "Tom Lane" <tgl@sss.pgh.pa.us> writes:
>> This seems to be exactly what we saw two weeks ago, and I just noticed
>> that in the JIT bgwriter patch, I put an Assert into ForwardFsyncRequest
>> in exactly the place where one was removed to make icc happy two weeks
>> ago. This one is less cosmetic and so I'm not as willing to just take
>> it out. I think we need to look closer. Can we confirm that
>> ForwardFsyncRequest somehow becomes a no-op when icc compiles it with an
>> Assert right there?
> It seems to work with icc on my 32 bit intel cpu. Earlier you speculated that
> the struct might be getting padded out which would cause hash failures. But
> surely using a different padding from other compilers would be a compiler bug
> since it would be an incompatible ABI change. I find it hard to believe
> intel's compiler would get the ia64 ABI wrong. And hard to believe nobody's
> noticed an incompatible ABI from gcc-generated binaries.
Well, I changed the Assert() to an explicit if-test-and-elog, and the
failure seems to have gone away. So I'd say that makes it absolutely
certainly an icc bug. Not clear what difference icc sees between an
enabled Assert and an if/elog, but evidently there is one.
regards, tom lane