Hi Brad, I would really like to keep the macro crud down in the headers, there is already the OSG_EXPORT macro used, this is purely to placate Windows issues, but to have yet another macro placed in a function call really is forcing the readability to deteriorate further. Can this be avoided? We declare other functions in the OSG without anything more than the OSG_EXPORT.
The implementation side I'm a little less concerned about, as it already has these macros in place, but they don't have the extra OSG_EXPORT. Robert. On Thu, Oct 14, 2010 at 5:24 AM, Christiansen, Brad <[email protected]> wrote: > Hi, > > I have managed to track down the issue and have attached the fix. The problem > was that the GLU functions were using a different calling convention. I don't > for a second pretend to understand the issue properly or why it exists as > anything that combines windows and C++ completely defies my understanding. > However, what I have done seems reasonable and does fix the problem. Somebody > who actually understands this stuff might have a cleaner solution but the > changes are actually very small and seem inline with what has been done in > other parts of OSG. > > For anyone who is interested or might understand the errors better, the > Visual Studio debugger reported the following: >>> Run-Time Check Failure #0 - The value of ESP was not properly saved across >>> a function call. This is usually a result of calling a function declared >>> with one calling convention with a function pointer declared with a >>> different calling convention. > > This led me here: > http://blogs.msdn.com/b/mithuns/archive/2006/12/11/pay-attention-to-the-calling-convention.aspx > Which is what I based my fix on. > > > > I have also noticed some warning during compilation which I haven't fixed but > thought I would mention anyway: > > 1> tess.cpp > 1>..\..\..\src-trunk\src\osg\glu\libtess\tess.cpp(505): warning C4611: > interaction between '_setjmp' and C++ object destruction is non-portable > > 1> error.cpp > 1>..\..\..\src-trunk\src\osg\glu\libutil\error.cpp(135): warning C4245: > 'initializing' : conversion from 'int' to 'GLuint', signed/unsigned mismatch > > 1> tess.cpp > 1>..\..\..\src-trunk\src\osg\glu\libtess\tess.cpp(505): warning C4611: > interaction between '_setjmp' and C++ object destruction is non-portable > > 1>d:\osg\osg-trunk\src-trunk\src\osg\glu\libutil\mipmap.cpp(5208): warning > C4701: potentially uninitialized local variable 'iter' used > 1>d:\osg\osg-trunk\src-trunk\src\osg\glu\libutil\mipmap.cpp(5550): warning > C4701: potentially uninitialized local variable 'iter' used > 1>d:\osg\osg-trunk\src-trunk\src\osg\glu\libutil\mipmap.cpp(6934): warning > C4701: potentially uninitialized local variable 'iter' used > 1>d:\osg\osg-trunk\src-trunk\src\osg\glu\libutil\mipmap.cpp(7368): warning > C4701: potentially uninitialized local variable 'iter' used > > Cheers. > Brad > > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of > Christiansen, Brad > Sent: Thursday, 14 October 2010 9:40 AM > To: OpenSceneGraph Users > Subject: Re: [osg-users] Crash with SVN version of Tessellator > > Hi Robert, > > Both osgtesselate and osgtext3D crash as well. The stack trace for > osgtesselate is: > >> osgd.dll!RenderStrip(osg::GLUtesselator * tess=0x0272a9f8, GLUhalfEdge * >> e=0x0272e6a0, long size=12907152) Line 311 + 0x32 bytes C++ > osgd.dll!__gl_renderMesh(osg::GLUtesselator * tess=0x0272a9f8, GLUmesh * > mesh=0x0272bb40) Line 99 + 0xd bytes C++ > osgd.dll!osg::gluTessEndPolygon(osg::GLUtesselator * tess=0x0272a9f8) > Line 572 + 0xd bytes C++ > osgUtild.dll!osgUtil::Tessellator::endTessellation() Line 87 + 0xf bytes > C++ > osgUtild.dll!osgUtil::Tessellator::retessellatePolygons(osg::Geometry & > geom={...}) Line 285 C++ > osgtessellated.exe!makeFrontWall(const float zpos=0.00000000) Line 289 + > 0x19 bytes C++ > osgtessellated.exe!makeHouse() Line 295 + 0xb bytes C++ > osgtessellated.exe!makeTessellateExample() Line 563 + 0x5 bytes C++ > osgtessellated.exe!main(int argc=1, char * * argv=0x0270dbe8) Line 762 + > 0x5 bytes C++ > osgtessellated.exe!__tmainCRTStartup() Line 555 + 0x19 bytes C > osgtessellated.exe!mainCRTStartup() Line 371 C > > Now I have a nice simple example to debug (and a debug build of it) I will > try and dig a little further and track down the issue. I am not holding my > breath though as my C++ debugging skills are not exactly stellar. I am > primarily a Java programmer after all : ) > > I assume this is a platform specific issue of some type? It would be great to > get some feedback from others using different platforms and compilers to try > and narrow down the cause of the crash. > > Cheers, > > Brad > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Robert > Osfield > Sent: Wednesday, 13 October 2010 4:54 PM > To: OpenSceneGraph Users > Subject: Re: [osg-users] Crash with SVN version of Tessellator > > Hi Brad, > > As you've spotted the GLU tessellation code has now been integrated > with the build of the core OSG library. I have taken the code from > Mesa 7.9, which in turn based it's GLU implementation on SGI base. > I'd expect most GLU implementations are based on the original SGI code > base, they might all have different bug fixes applied to them, perhaps > the Mesa code doesn't have a fix that the previous GLU library that > you were linking against had, or perhaps I've introduced a bug during > integration. > > One advantage now is that you will be able build the GLU code with > debug along with the rest of the OSG and be able step through it see > where problems might be arising. From your stack trace the line: > > :push_back(osg::Vec3f * const & _Val=0x00000000) > > Looks pretty suspicious. The debug info doesn't really reveal exactly > which code is calling phs_back with the dodgy value. > > BTW, Do you see problems when you run osgtext3D? Or osgtessellate? > Both of these will be using the newly integrated GLU tessellation > code. > > Robert. > > > On Wed, Oct 13, 2010 at 9:42 AM, Christiansen, Brad > <[email protected]> wrote: >> Hi, >> >> I forgot a few details. I am runnign Windows 7 with Visual Studio 2010. >> >> The relevent bit of the stack trace is: >> >> msvcr100.dll!free(void * pBlock=0x0c3acde8) Line 51 C >>> osgUtilrd.dll!std::vector<osg::Vec3f *,std::allocator<osg::Vec3f *> >>> >::reserve(unsigned int _Count=141) Line 765 + 0x6 bytes C++ >> osgUtilrd.dll!std::vector<osg::Vec3f *,std::allocator<osg::Vec3f *> >> >::_Reserve(unsigned int _Count=150271084) Line 1297 + 0x21 bytes C++ >> osgUtilrd.dll!std::vector<osg::Vec3f *,std::allocator<osg::Vec3f *> >> >::push_back(osg::Vec3f * const & _Val=0x00000000) Line 995 + 0xe bytes >> C++ >> 08f4f488() >> osgrd.dll!__gl_renderCache(osg::GLUtesselator * tess=0x08f4f9b4) >> Line 493 + 0x1a bytes C++ >> >> Cheers, >> >> Brad >> >> -----Original Message----- >> From: [email protected] >> [mailto:[email protected]] On Behalf Of >> Christiansen, Brad >> Sent: Wednesday, 13 October 2010 2:05 PM >> To: OpenSceneGraph Users >> Subject: [osg-users] Crash with SVN version of Tessellator >> >> Hi, >> >> I have just updated to the latest revision of OSG and am now getting a crash >> when calling Tessellator.retessellatePolygons. >> >> The code in my application calling this function hasn't changed in many >> years and has started breaking since the update. I have debugged the issue a >> little and the crash is occuring when the Tessellator::endTessellation >> function is called. The crash occurs on a call to free. I think I will need >> to do a full debug build of OSG to get much further with my debuging (I am >> using release with debug info) but a full rebuild will take me a while. >> >> The previous (working) version of OSG I used was revision 11703 and the new >> (broken) revision is 11835. >> >> I know al the new GLU code has been added between these revision so I am >> guessing that is what is causing the error. Before I go much further I was >> wondering if anyone had any info that might help me track down the issue. It >> doesn't seem that the required usage of Tessellator has changed but I am >> hoping it has so I can simply call some different methods to fix the issue. >> >> Cheers, >> >> Brad >> >> >> >> >> >> DISCLAIMER:--------------------------------------------------------------------------- >> This e-mail transmission and any documents, files and previous e-mail >> messages >> attached to it are private and confidential. They may contain proprietary or >> copyright >> material or information that is subject to legal professional privilege. >> They are for >> the use of the intended recipient only. Any unauthorised viewing, use, >> disclosure, >> copying, alteration, storage or distribution of, or reliance on, this >> message is >> strictly prohibited. No part may be reproduced, adapted or transmitted >> without the >> written permission of the owner. If you have received this transmission in >> error, or >> are not an authorised recipient, please immediately notify the sender by >> return email, >> delete this message and all copies from your e-mail system, and destroy any >> printed >> copies. Receipt by anyone other than the intended recipient should not be >> deemed a >> waiver of any privilege or protection. Thales Australia does not warrant or >> represent >> that this e-mail or any documents, files and previous e-mail messages >> attached are >> error or virus free. >> -------------------------------------------------------------------------------------- >> >> _______________________________________________ >> osg-users mailing list >> [email protected] >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> >> >> >> DISCLAIMER:--------------------------------------------------------------------------- >> This e-mail transmission and any documents, files and previous e-mail >> messages >> attached to it are private and confidential. They may contain proprietary or >> copyright >> material or information that is subject to legal professional privilege. >> They are for >> the use of the intended recipient only. Any unauthorised viewing, use, >> disclosure, >> copying, alteration, storage or distribution of, or reliance on, this >> message is >> strictly prohibited. No part may be reproduced, adapted or transmitted >> without the >> written permission of the owner. If you have received this transmission in >> error, or >> are not an authorised recipient, please immediately notify the sender by >> return email, >> delete this message and all copies from your e-mail system, and destroy any >> printed >> copies. Receipt by anyone other than the intended recipient should not be >> deemed a >> waiver of any privilege or protection. Thales Australia does not warrant or >> represent >> that this e-mail or any documents, files and previous e-mail messages >> attached are >> error or virus free. >> -------------------------------------------------------------------------------------- >> >> _______________________________________________ >> osg-users mailing list >> [email protected] >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > DISCLAIMER:--------------------------------------------------------------------------- > This e-mail transmission and any documents, files and previous e-mail messages > attached to it are private and confidential. They may contain proprietary or > copyright > material or information that is subject to legal professional privilege. They > are for > the use of the intended recipient only. Any unauthorised viewing, use, > disclosure, > copying, alteration, storage or distribution of, or reliance on, this message > is > strictly prohibited. No part may be reproduced, adapted or transmitted > without the > written permission of the owner. If you have received this transmission in > error, or > are not an authorised recipient, please immediately notify the sender by > return email, > delete this message and all copies from your e-mail system, and destroy any > printed > copies. Receipt by anyone other than the intended recipient should not be > deemed a > waiver of any privilege or protection. Thales Australia does not warrant or > represent > that this e-mail or any documents, files and previous e-mail messages > attached are > error or virus free. > -------------------------------------------------------------------------------------- > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > DISCLAIMER:--------------------------------------------------------------------------- > This e-mail transmission and any documents, files and previous e-mail messages > attached to it are private and confidential. They may contain proprietary or > copyright > material or information that is subject to legal professional privilege. They > are for > the use of the intended recipient only. Any unauthorised viewing, use, > disclosure, > copying, alteration, storage or distribution of, or reliance on, this message > is > strictly prohibited. No part may be reproduced, adapted or transmitted > without the > written permission of the owner. If you have received this transmission in > error, or > are not an authorised recipient, please immediately notify the sender by > return email, > delete this message and all copies from your e-mail system, and destroy any > printed > copies. Receipt by anyone other than the intended recipient should not be > deemed a > waiver of any privilege or protection. Thales Australia does not warrant or > represent > that this e-mail or any documents, files and previous e-mail messages > attached are > error or virus free. > -------------------------------------------------------------------------------------- > > > _______________________________________________ > osg-submissions mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org > > _______________________________________________ osg-submissions mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
