[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)

Allan Sandfeld Jensen kde at carewolf.com
Fri Oct 10 17:22:01 CEST 2014


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



More information about the Interest mailing list