Hi Robert, the issue was fixed. No valgrind messages on un-init values anymore.
Thank you very much. Regards, Peter. Von: osg-submissions [mailto:[email protected]] Im Auftrag von Robert Osfield Gesendet: Mittwoch, 4. Januar 2017 14:04 An: OpenSceneGraph Submissions Betreff: Re: [osg-submissions] Valgrind osg 3.4.0 Hi Peter, Thanks for clear pointers to the cause of the uninitializaed variable usage - essentially computeMatrix() gets called prematurely. I have restructured the problem constructor to ensure that the computeMatrix() only gets called after the variables have been initialized. The fix is now checked into git master, 3.4 and 3.2 branches: https://github.com/openscenegraph/OpenSceneGraph/commit/b5c4f461bc8a2ad86cb55ce9a01b5baf60c200b7 Could you test this and let me know how you get on, Robert. On 4 January 2017 at 08:12, Sturm, Peter <[email protected]<mailto:[email protected]>> wrote: Hello, I have found following using valgrind: ==24954== Conditional jump or move depends on uninitialised value(s) ==24954== at 0x4B7A4E9: cos (in /lib/libm-2.19.so<http://libm-2.19.so>) ==24954== by 0x4983E79: osg::Quat::makeRotate(double, double, double, double) (in /MIL/SCTT/DEV/RTS/tmp/psturm/update/libosg.so.130) ==24954== by 0x4983F4A: osg::Quat::makeRotate(double, osg::Vec3d const&) (in /MIL/SCTT/DEV/RTS/tmp/psturm/update/libosg.so.130) ==24954== by 0x4572498: osgSim::DirectionalSector::computeMatrix() (in /MIL/SCTT/DEV/RTS/tmp/psturm/update/libosgSim.so.130) ==24954== by 0x45725D0: osgSim::DirectionalSector::setDirection(osg::Vec3f const&) (in /MIL/SCTT/DEV/RTS/tmp/psturm/update/libosgSim.so.130) ==24954== by 0x457264E: osgSim::DirectionalSector::DirectionalSector(osg::Vec3f const&, float, float, float, float) (in /MIL/SCTT/DEV/RTS/tmp/psturm/update/libosgSim.so.130) ==24954== by 0x41FA64F: LightPoint::addVertex(flt::Vertex&) (LightPointRecords.cpp:137) ==24954== by 0x41FC100: flt::VertexCN::readRecord(flt::RecordInputStream&, flt::Document&) (VertexRecords.cpp:114) ==24954== by 0x421885E: flt::RecordInputStream::readRecordBody(int, int, flt::Document&) (RecordInputStream.cpp:75) ==24954== by 0x4218ADD: flt::RecordInputStream::readRecord(flt::Document&) (RecordInputStream.cpp:40) ==24954== by 0x4211491: flt::VertexListRecord::readRecord(flt::RecordInputStream&, flt::Document&) (GeometryRecords.cpp:596) ==24954== by 0x421885E: flt::RecordInputStream::readRecordBody(int, int, flt::Document&) (RecordInputStream.cpp:75) ==24954== Uninitialised value was created by a heap allocation ==24954== at 0x402A6CC: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-x86-linux.so) ==24954== by 0x4276E72: operator new(unsigned int) (new_op.cc:52) ==24954== by 0x41FA5DE: LightPoint::addVertex(flt::Vertex&) (LightPointRecords.cpp:137) ==24954== by 0x41FC100: flt::VertexCN::readRecord(flt::RecordInputStream&, flt::Document&) (VertexRecords.cpp:114) ==24954== by 0x421885E: flt::RecordInputStream::readRecordBody(int, int, flt::Document&) (RecordInputStream.cpp:75) ==24954== by 0x4218ADD: flt::RecordInputStream::readRecord(flt::Document&) (RecordInputStream.cpp:40) ==24954== by 0x4211491: flt::VertexListRecord::readRecord(flt::RecordInputStream&, flt::Document&) (GeometryRecords.cpp:596) ==24954== by 0x421885E: flt::RecordInputStream::readRecordBody(int, int, flt::Document&) (RecordInputStream.cpp:75) ==24954== by 0x42049FA: FLTReaderWriter::readNode(std::istream&, osgDB::Options const*) const (ReaderWriterFLT.cpp:401) ==24954== by 0x420695C: FLTReaderWriter::readNode(std::string const&, osgDB::Options const*) const (ReaderWriterFLT.cpp:194) ==24954== by 0x44B1B81: osgDB::Registry::ReadNodeFunctor::doRead(osgDB::ReaderWriter&) const (in /MIL/SCTT/DEV/RTS/tmp/psturm/update/libosgDB.so.130) ==24954== by 0x44A95AE: osgDB::Registry::read(osgDB::Registry::ReadFunctor const&) (in /MIL/SCTT/DEV/RTS/tmp/psturm/update/libosgDB.so.130) I believe, the message is created by src/osgSim/Sector.cpp lines 220-247/363 The member _rollAngle is not intitialized then computeMatrix() is called after first call of DirectionalSector::DirectionalSector(const osg::Vec3& direction,float horizLobeAngle, float vertLobeAngle, float lobeRollAngle, float fadeAngle) The issue may be fixed, if _rollAngle is initialized with lobeRollAngle in the constructor first. DirectionalSector::DirectionalSector(const osg::Vec3& direction,float horizLobeAngle, float vertLobeAngle, float lobeRollAngle, float fadeAngle): Sector() { setDirection(direction); setHorizLobeAngle(horizLobeAngle); setVertLobeAngle(vertLobeAngle); setLobeRollAngle(lobeRollAngle); setFadeAngle(fadeAngle); } void DirectionalSector::computeMatrix() { double heading = atan2(_direction[0], _direction[1]); double pitch = atan2(_direction[2], sqrt(_direction[0]*_direction[0] + _direction[1]*_direction[1])); double roll = _rollAngle; _local_to_LP.setRotate(osg::Quat(heading,osg::Vec3d(0.0, 0.0, -1.0))); _local_to_LP.preMultRotate(osg::Quat(pitch, osg::Vec3d(1.0, 0.0, 0.0))); _local_to_LP.preMultRotate(osg::Quat(roll, osg::Vec3d(0.0, 1.0, 0.0))); } void DirectionalSector::setDirection(const osg::Vec3& direction) { _direction = direction ; computeMatrix() ; } […] void DirectionalSector::setLobeRollAngle(float angle) { _rollAngle = angle ; computeMatrix() ; } Mit freundlichen Grüßen / Yours sincerely Peter Sturm Rheinmetall Defence Electronics GmbH Brüggeweg 54 28309 Bremen / Germany Sitz der Gesellschaft : Bremen Amtsgericht Bremen HRB 9659 Geschäftsführung: Helmut Möring Thorsten Quade Ulrich Sasse Vorsitzender des Aufsichtsrats: Gordon Hargreave This email may contain confidential information. If you are not the intended addressee, or if the information provided in this email (including any attachments) is evidently not destined for you, kindly inform us promptly and delete the message received in error (including any attachments) by erasing it from all your computers and other storage devices or media and destroying any hard copies thereof. Any unauthorized processing, forwarding, disclosure, distribution, divulgation, storage, printout or other use of this message or its attachment is prohibited. If your system is infected or otherwise bugged by any virus that is carried by this email, we disclaim any liability whatsoever for the ensuing loss or damage unless caused by our intention or gross negligence. _______________________________________________ osg-submissions mailing list [email protected]<mailto:[email protected]> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org Rheinmetall Defence Electronics GmbH Brüggeweg 54 28309 Bremen / Germany Sitz der Gesellschaft : Bremen Amtsgericht Bremen HRB 9659 Geschäftsführung: Helmut Möring Thorsten Quade Ulrich Sasse Vorsitzender des Aufsichtsrats: Gordon Hargreave This email may contain confidential information. If you are not the intended addressee, or if the information provided in this email (including any attachments) is evidently not destined for you, kindly inform us promptly and delete the message received in error (including any attachments) by erasing it from all your computers and other storage devices or media and destroying any hard copies thereof. Any unauthorized processing, forwarding, disclosure, distribution, divulgation, storage, printout or other use of this message or its attachment is prohibited. If your system is infected or otherwise bugged by any virus that is carried by this email, we disclaim any liability whatsoever for the ensuing loss or damage unless caused by our intention or gross negligence.
_______________________________________________ osg-submissions mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
