[Qt-interest] Crash in Destructor of QVector (Heap Corruption)

Matthias Pospiech matthias.pospiech at gmx.de
Sun Jun 7 16:39:25 CEST 2009


(This migth be non Qt related, but since the crash happens in QVector I 
am not sure where it comes from)
I have a crash (Heap Corruption) which I absolutely do not understand:

HEAP[ShapedMaterialProcessingd.exe]: Heap block at 0211A180 modified at 
0211C1AC past requested size of 2024
Windows has triggered a breakpoint in ShapedMaterialProcessingd.exe.

This may be due to a corruption of the heap, and indicates a bug in 
ShapedMaterialProcessingd.exe or any of the DLLs it has loaded.

The output window may have more diagnostic information
HEAP[ShapedMaterialProcessingd.exe]: Invalid Address specified to 
RtlValidateHeap( 00DF0000, 0211A188 )
Windows has triggered a breakpoint in ShapedMaterialProcessingd.exe.

     msvcr80d.dll!_free_dbg_nolock(void * pUserData=0x0211a1a8, int 
nBlockUse=1)  Line 1279 + 0x30 bytes    C++
     msvcr80d.dll!_free_dbg(void * pUserData=0x0211a1a8, int 
nBlockUse=1)  Line 1220 + 0xd bytes    C++
     msvcr80d.dll!free(void * pUserData=0x0211a1a8)  Line 1178 + 0xb 
bytes    C++
     QtCored4.dll!6703fb6d()    
     [Frames below may be incorrect and/or missing, no symbols loaded 
for QtCored4.dll]   
     
ShapedMaterialProcessingd.exe!QVector<double>::free(QVectorTypedData<double> 
* x=0x0211a1a8)  Line 425 + 0xc bytes    C++
     ShapedMaterialProcessingd.exe!QVector<double>::~QVector<double>()  
Line 114 + 0x42 bytes    C++
     ShapedMaterialProcessingd.exe!PhaseFromPeriod::~PhaseFromPeriod()  
Line 21 + 0x5a bytes    C++
     ShapedMaterialProcessingd.exe!ShapingGrating::~ShapingGrating()  
Line 26 + 0x29 bytes    C++
     ShapedMaterialProcessingd.exe!beamshapes::~beamshapes()  Line 43 + 
0x8c bytes    C++
     ShapedMaterialProcessingd.exe!beamshapes::`vbase destructor'()  + 
0x1c bytes    C++
     ShapedMaterialProcessingd.exe!PhaseObject::~PhaseObject()  Line 17 
+ 0xe bytes    C++


The Instanz from class PhaseObject is deleted. This comes to the 
destruction of the object: 'phaseCalibration'

class ShapingGrating : public virtual BeamShapingBasics
{

public:
    ShapingGrating();
    virtual ~ShapingGrating();

private:
    PhaseFromPeriod phaseCalibration;


which has the QVector

class PhaseFromPeriod
{
public:
    virtual ~PhaseFromPeriod(){}

private:
    QVector<double> m_Period;

Now the destructor from 'm_Period' is called and the appliction crashes.
I tried a complete rebuild but that did not help. I did not change the 
code since it worked last time (as much as I can remember).

What could I try? Development platform is Windows MSVC

Matthias




More information about the Qt-interest-old mailing list