crash on exit (win32)

I overridded onExit() and added a new sprite to anthoer node(eg, parent). while exit, the app crashes at

CCTexture2D::~CCTexture2D() {
    glDeleteTextures(1, &m_uName);   // CRASH !!!   

I found all other Sprites/Textures were deallocated in CCDirector::purgeDirector(), but that new Sprite, created in onExit(), was deallocated in CCDirector()::~CCDirector(),
because it’s retained by AutoReleasePool…

    libcocos2d.dll!cocos2d::CCTexture2D::`vector deleting destructor'()  + 0x69 字节  C++
    libcocos2d.dll!cocos2d::CCObject::release()  行 84 + 0x35 字节 C++
    libcocos2d.dll!cocos2d::CCSprite::~CCSprite()  行 333    C++
    libcocos2d.dll!cocos2d::CCSprite::`vector deleting destructor'()  + 0x6c 字节 C++
    libcocos2d.dll!cocos2d::CCObject::release()  行 84 + 0x35 字节 C++
    libcocos2d.dll!cocos2d::CCMutableArray::removeAllObjects(bool bDeleteObject)  行 230 + 0xf 字节   C++
    libcocos2d.dll!cocos2d::CCAutoreleasePool::clear()  行 79    C++
    libcocos2d.dll!cocos2d::CCPoolManager::pop()  行 149 C++
>   libcocos2d.dll!cocos2d::CCDirector::~CCDirector()  行 151    C++
    libcocos2d.dll!cocos2d::CCDisplayLinkDirector::~CCDisplayLinkDirector()  + 0x2b 字节  C++
    libcocos2d.dll!cocos2d::`dynamic atexit destructor for 's_sharedDirector''()  + 0x28 字节 C++
    libcocos2d.dll!_CRT_INIT(void * hDllHandle, unsigned long dwReason, void * lpreserved)  行 415   C
    libcocos2d.dll!__DllMainCRTStartup(void * hDllHandle, unsigned long dwReason, void * lpreserved)  行 526 + 0x11 字节   C
    libcocos2d.dll!_DllMainCRTStartup(void * hDllHandle, unsigned long dwReason, void * lpreserved)  行 476 + 0x11 字节    C

Why did glDeleteTextures() crash? Guess the opengl context had been destroyed?

codes to reproduce:

class TestNode : public CCNode {
public:  
  virtual void onExit() {    
    CCNode::onExit();            
    CCSprite *node = CCSprite::spriteWithFile("CloseSelected.png");
    getParent()->addChild(node);  
  }
};

CCScene* HelloWorld::scene()
{
    CCScene *scene = CCScene::node();
    HelloWorld *layer = HelloWorld::node();
    scene->addChild(layer);

  TestNode *tn = new TestNode();  
  tn->autorelease();
  layer->addChild(tn);

    return scene;
}

I face the same problem. I guess the texture delete twice to make the application crash.

I also got the same answer when calling CCDirector::sharedDirector()->end();