Ok, it seems I’ve found a solution.
In CCParticleSystemQuad::setBatchNode after
there is should be
memset(m_pBuffersVBO, 0, sizeof(m_pBuffersVBO));
VBO names (m_pBuffersVBO) should be zeroed because, they will be deleted again in CCParticleSystemQuad::setupVBO() when the particle system is detached from the batch. The fact is that at that time those VBOs belong to another node (in our case that is CCLabelBMFont).