1.7.1 release

Was it this bug (advanced one) ?
:display:gsg:glgsg(error): GL texture creation failed for : invalid operation
:display:gsg:glgsg(error): Could not load

And this one is still crashing hard (tested on windows) :

from pandac.PandaModules import *
#~ loadPrcFileData('','notify-level-display spam')
from direct.showbase.DirectObject import DirectObject
import direct.directbase.DirectStart

class World( DirectObject ):

  def __init__( self ):
#     base.disableMouse()
    base.cam.setPos( 0, -20, 2 )
#     self.accept( 'mouse1', self.destroyAndCreate )
    render.setShaderAuto()
    self.create()

  def create( self ):
    self.rootNode = render.attachNewNode( 'rootNode' )
    CM = CardMaker('')
    CM.setFrame(-1,1,-1,1)
    card = self.rootNode.attachNewNode( CM.generate())
    card.setZ(-1)
    card.setScale(5)
    card.setP(-90)

    self.light = self.rootNode.attachNewNode( Spotlight( 'Spot' ) )
    self.lightNode = self.light.node()
    self.lightNode.setShadowCaster( True, 512, 512 )
    self.light.setPos( -20, -20, 20 )
    self.light.lookAt( 0,0,0 )
    self.light.posInterval(3,Point3(-30,-20,20)).loop()
    self.rootNode.setLight( self.light )

    loader.loadModel( 'teapot' ).reparentTo( self.rootNode )

    self.buffer = base.win.makeTextureBuffer( 'Buffer', 512, 512 , Texture())
    self.camNP = base.makeCamera( self.buffer )
    self.camNP.reparentTo( self.rootNode )

  def destroy( self ):
    self.buffer.clearRenderTextures()
    #~ self.buffer.setActive(0)
    #~ print self.buffer.getDisplayRegion(0).getCamera()
    base.graphicsEngine.removeWindow( self.buffer )
    self.camNP = self.buffer = None
    taskMgr.doMethodLater(.5,self.postDestroy,'postDestroy')

  def postDestroy(self,t):
    self.lightNode.setShadowCaster( False )
    self.rootNode.clearLight( self.light )
    self.light = None
    self.rootNode.setState(RenderState.makeEmpty())
    self.rootNode.setShaderOff(10)
    self.rootNode.removeNode()
    print base.graphicsEngine.getNumWindows()
    base.bufferViewer.refreshReadout()

  def destroyAndCreate( self ):
    self.destroy()
    self.create()

w = World()

import os
base.accept('escape',os._exit,[0])
base.accept('space',w.destroy)
base.accept('enter',w.create)

base.bufferViewer.enable(1)
run()

Press SPACE, then ENTER.

And thanks for the hard work ! :smiley: