Possible limitation of Points in Marker::LINE_STRIP and Rviz

asked 2014-09-09 08:11:09 -0600

TheElk gravatar image

Hi

im facing an error whenever I try to visualize a Marker::LINE_STRIP with more than (approx) 8200 Points in it. The code seems to run fine but RVIZ crashes with an chainIndex out of bounds Exception. The Exact output ist:

[ WARN] [1410267962.066933906]: OGRE EXCEPTION(5:ItemIdentityException): chainIndex out of bounds in BillboardChain::addChainElement at /build/buildd/ogre-1.8-1.8.1+dfsg/OgreMain/src/OgreBillboardChain.cpp (line 243)
Qt has caught an exception thrown from an event handler. Throwing
exceptions from an event handler is not supported in Qt. You must
reimplement QApplication::notify() and catch all exceptions there.

terminate called after throwing an instance of 'Ogre::ItemIdentityException'
  what():  OGRE EXCEPTION(5:ItemIdentityException): chainIndex out of bounds in BillboardChain::addChainElement at /build/buildd/ogre-1.8-1.8.1+dfsg/OgreMain/src/OgreBillboardChain.cpp (line 243)
Aborted (core dumped)

Is there a Limit of points I am able to vizualize using one single Marker?

Thanks in Advance

edit retag flag offensive close merge delete

Comments

max was 100 as per here , you can try with 100 and 101.

bvbdort gravatar image bvbdort  ( 2014-09-09 11:35:07 -0600 )edit

I dont think that this is the problem, as it runs fiene for the first approx. 8200 Points. Shouldnt it then crash at 100 Points?

TheElk gravatar image TheElk  ( 2014-09-10 01:22:24 -0600 )edit

I confirm the same behaviour. Rviz appears to crash down as soon as the Markers' vector size goes beyond 8192 (2^13). The cause didn't jump at me by a quick look through the source code. Should look at it more closely. I'd also be interested to know the answer if anyone happens to find it!

nfattahi gravatar image nfattahi  ( 2014-09-10 20:08:44 -0600 )edit

The number of Elements of a BillboardChain (obviously the datatype responsible for storing Marker in RVIZ; from Ogre) has a limit named mChainCount which can be set in its constructor. Maybe RVIZ sets this value to 8192. I'll investigate a little further, maybe i find a proper answer.

TheElk gravatar image TheElk  ( 2014-09-15 08:23:14 -0600 )edit

So i looked through all files from RVIZ and OGRE and the only occurence of the string "8192" that makes sense is the "#define THREADCACHEMAX 8192" from nedmalloc/nedmalloc.c from OGRE. Maybe this ist he point but I dont know exactly

TheElk gravatar image TheElk  ( 2014-09-16 03:03:55 -0600 )edit