Hi,
After re-loading a scene, we get a std::bad_alloc (with 3 gigs) from the
following place (line 601 in OSGShaderProgram.cpp):
if(iStatus == 0)
{
Char8 *szDebug;
GLint iDebugLength;
osgGlGetShaderiv( uiShader,
GL_INFO_LOG_LENGTH,
&iDebugLength);
szDebug = new Char8[iDebugLength];
^^^^^^^^
Looking at the values in a debugger, iDebugLength is stupidly large
(1768036544) so I think the glgetshaderiv fails and never writes to this
value. (Is it guaranteed to do that always?)
Anyway, the allocation fails, so we can't really figure out what goes
wrong. (We just load the same scene again..)
The call stack is included below.
I suppose I could patch OpenSG to set both szDebug and iDebugLength to
zero, and see if it helps. (It's probably a good idea anyway. ;)
I'll look into that after the weekend. Ideas in the meantime are welcome. :)
Cheers
/Marcus
kernel32.dll!_raiseexcept...@16() + 0x58 bytes
msvcr90.dll!__cxxthrowexcept...@8() + 0x48 bytes
msvcr90.dll!operator new() + 0x64 bytes
OSGSystem.dll!OSG::ShaderProgram::handleGL(OSG::DrawEnv *
pEnv=0x696218c0, unsigned int id=199580312, OSG::Window::GLObjectStatusE
mode=0, unsigned int uiOptions=0) Line 601 C++
OSGSystem.dll!boost::_bi::bind_t<unsigned
int,boost::_mfi::mf4<unsigned int,OSG::ShaderProgram,OSG::DrawEnv
*,unsigned int,enum OSG::Window::GLObjectStatusE,unsigned
int>,boost::_bi::list5<boost::_bi::value<OSG::MTPtr<OSG::ShaderProgram>
>,boost::arg<1>,boost::arg<2>,boost::arg<3>,boost::arg<4> >
>::operator()<OSG::DrawEnv *,unsigned int,enum
OSG::Window::GLObjectStatusE,unsigned int>(OSG::DrawEnv * &
a1=0x04d13de8, unsigned int & a2=250, OSG::Window::GLObjectStatusE &
a3=16242956, unsigned int & a4=) Line 145 + 0x5b bytes C++
OSGSystem.dll!boost::detail::function::function_obj_invoker4<boost::_bi::bind_t<unsigned
int,boost::_mfi::mf4<unsigned int,OSG::ShaderProgram,OSG::DrawEnv
*,unsigned int,enum OSG::Window::GLObjectStatusE,unsigned
int>,boost::_bi::list5<boost::_bi::value<OSG::MTPtr<OSG::ShaderProgram>
>,boost::arg<1>,boost::arg<2>,boost::arg<3>,boost::arg<4> > >,unsigned
int,OSG::DrawEnv *,unsigned int,enum
OSG::Window::GLObjectStatusE,unsigned
int>::invoke(boost::detail::function::function_buffer &
function_obj_ptr={...}, OSG::DrawEnv * a0=0x04d13de8, unsigned int
a1=250, OSG::Window::GLObjectStatusE a2=initialize, unsigned int a3=0)
Line 132 C++
OSGSystem.dll!boost::function4<unsigned int,OSG::DrawEnv *,unsigned
int,enum OSG::Window::GLObjectStatusE,unsigned
int>::operator()(OSG::DrawEnv * a0=0x04d13de8, unsigned int a1=250,
OSG::Window::GLObjectStatusE a2=initialize, unsigned int a3=0) Line 989
+ 0x1d bytes C++
OSGSystem.dll!OSG::Window::validateGLObject(unsigned int
osgId=189771712, OSG::DrawEnv * pEnv=0x04d13de8, unsigned int
uiOptions=0) Line 687 + 0x16 bytes C++
OSGSystem.dll!OSG::SimpleSHLChunk::changeFrom(OSG::DrawEnv *
pEnv=0x04d13de8, OSG::StateChunk * pOther=0x00000022, unsigned int
uiIdx=0) Line 618 + 0x27 bytes C++
OSGSystem.dll!OSG::DrawEnv::changeTo(OSG::State * pState=0x00000000,
OSG::StateOverride * pOverride=0x04cc95c0, OSG::State * pOld=0x04f16ae8,
OSG::StateOverride * pOldOverride=0x04cc95c0) Line 457 C++
OSGSystem.dll!OSG::TreeBuilderBase::drawNode(OSG::RenderTreeNode *
pNode=0x0bb4e130, OSG::DrawEnv & denv={...}, OSG::RenderPartitionBase *
part=0x04d13db0) Line 154 + 0x2b bytes C++
OSGSystem.dll!OSG::TreeBuilderBase::drawNode(OSG::RenderTreeNode *
pNode=0x0bb4e420, OSG::DrawEnv & denv={...}, OSG::RenderPartitionBase *
part=0x04d13db0) Line 166 C++
OSGSystem.dll!OSG::TreeBuilderBase::drawNode(OSG::RenderTreeNode *
pNode=0x0bb4e680, OSG::DrawEnv & denv={...}, OSG::RenderPartitionBase *
part=0x04d13db0) Line 166 C++
OSGSystem.dll!OSG::TreeBuilderBase::drawNode(OSG::RenderTreeNode *
pNode=0x0bb4e320, OSG::DrawEnv & denv={...}, OSG::RenderPartitionBase *
part=0x04d13db0) Line 166 C++
OSGSystem.dll!OSG::TreeBuilderBase::drawNode(OSG::RenderTreeNode *
pNode=0x0bb4e228, OSG::DrawEnv & denv={...}, OSG::RenderPartitionBase *
part=0x04d13db0) Line 166 C++
OSGSystem.dll!OSG::TreeBuilderBase::draw(OSG::DrawEnv & denv={...},
OSG::RenderPartitionBase * part=0x04d13db0) Line 102 C++
OSGSystem.dll!OSG::RenderPartition::doExecution() Line 460 C++
------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations
Conference from O'Reilly Media. Velocity features a full day of
expert-led, hands-on workshops and two days of sessions from industry
leaders in dedicated Performance & Operations tracks. Use code vel09scf
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users