Horde (respective the GL driver) crashes during loading of a Pipeline resource if it fails to allocate a RenderTarget.
Callstack:
Code:
#4 0xb3e627ba in glDeleteTextures (n=1, ids=0x4f633cf0) at ../../../OpenGL/gl_hash.h:365
#5 0xaabd8e5b in RendererBase::releaseTexture(unsigned int) () libHorde3D.so
#6 0xaabda17d in RendererBase::releaseRenderBuffer(unsigned int) () libHorde3D.so
#7 0xaabcc2bf in PipelineResource::releaseRenderTargets() () libHorde3D.so
#8 0xaabc8a82 in PipelineResource::release() () libHorde3D.so
#9 0xaabc8cdf in PipelineResource::raiseError(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) () libHorde3D.so
#10 0xaabcd1c4 in PipelineResource::load(char const*, int) () libHorde3D.so
#11 0xaabaaf4e in h3dLoadResource () libHorde3D.so
#12 0xaaae5808 in h3dutLoadResourcesFromDisk () libHorde3DUtils.so
Problem: Neither addRenderTarget nor RenderTarget's ctor initialize RenderTarget's rendBuf member.
So if a rendertarget cannot be allocated (not enough samples in my case) Horde notifies an error (raiseError) and releases the rendertargets (all of them, created or not).
Hence, there needs to be a proper rendBuf = 0 init in RenderTarget and a 0-check before the call to RendererBase::releaseTexture.
I attached a patch (SVN diff format), which fixes the problem.