Hi Allan, >>> Since they belong to different classes, could it be that each inherited >>> class in win64 starts on a 64bit aligned address, where they are places >>> more compact on other x64 platforms?
Not in general, I'd say - at least not for 'normal' classes. I'm not an expert when it comes to the C++ object model and alignments, and I might be totally wrong here, but in a quick test the 4-byte-long member variable of "derived" followed the "base" member directly, i.e. was not aligned at the 64-bit address using the default compiler settings. Apart from that & from your POV - is the failing assert problematic? Thanks, Andre -----Original Message----- From: Allan Sandfeld Jensen [mailto:carew...@gmail.com] On Behalf Of Allan Sandfeld Jensen Sent: Friday, October 10, 2014 5:22 PM To: Andre Barth Cc: interest@qt-project.org Subject: Re: [Interest] ASSERT / Debug Crash in Qt 5.3.2. WTF, Windows x64, LLIntData.cpp at bitwise_cast<uint32_t*>(&testVector)[sizeof(void*)/sizeof(uint32_t) + 1] == 42) Hi On Friday 10 October 2014, Andre Barth wrote: > Hi Allan, > > castResult[3] is indexResult - forgot to print that explicitly; sorry > > indexedResult > 0xcccccccc > > Anyway: > Here's the complete layout > &testVector > 0x000000000026e8e8 {m_size=42 } > WTF::VectorBuffer<int,0>: {...} > m_size: 42 > &testVector.m_size > 0x000000000026e8f8 {42} > &testVector.m_capacity > 0x000000000026e8f0 {42} > This looks like the culprit. Size and capacity are each only 32 integers but the m_size has been placed on a 64bit aligned address leaving 4byte gap. . Since they belong to different classes, could it be that each inherited class in win64 starts on a 64bit aligned address, where they are places more compact on other x64 platforms? `Allan _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest