Hi, On Mon, 2007-03-26 at 20:22 -0500, Allen Bierbaum wrote: > I seem to be very lucky this week, I ran into another very nasty bug. :( > > I narrowed it down to this section of code in my application: > > OSG::NodePtr model_xform = getModelXform(modelId); > OSG_ASSERT(model_xform != OSG::NullFC && "Model xform is NULL"); > OSG::commitChanges(); > > OSG_ASSERT(mRootNode.node()->findChild(model_xform) != -1); > mRootNode.node()->subChild(model_xform); > > OSG::commitChanges(); // loop forever > > model_xform is a transform node with a textured model under it made up > of a screen size LOD and several sub-trees of of material groups and > geometries (data loaded from a VRML model). > > When I call the final commitChanges, OpenSG becomes stuck in an infinite > loop. I added some debug code and found that the > ContainerChangeEntry::commitChanges keeps getting called over and over > for the same field container. In all cases it was looping over and over > on an Image container. With a bit of investigation and some remote > support from Dirk, we found that if I commented out the contents of > Image::changed then the code would not loop forever. So for now I have > just removed that code and will keep running without it until I can get > some advice from someone on what may be causing this problem.
looking at the code actually I wonder why the image ever worked. Changed just unconditionally sets internal variables and this should loop forever all the time. So the bug actually is that there are cases where it does not ;-) which after looking into some other code pieces becomes clear. I'll fix that one and try to work backward from there. Currently commit is setup to loop until all (including dependent) changes are committed. Which means if you create change circles it will loop forever. The options you have to limit the amount of loops are either to use a fixed upper limited on the number of loops or restrict the looping that per commit a container is only touched once. Both look artificial to me so I would prefer to have a loop free changed setup. regards, gerrit ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Opensg-core mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensg-core
