Boost logo

Boost Users :

Subject: Re: [Boost-users] [serialization] no RTTI data error
From: Noah Roberts (roberts.noah_at_[hidden])
Date: 2010-06-22 16:14:40


In article <MPG.268a99cfa5838af4989687_at_[hidden]>,
roberts.noah_at_[hidden] says...
>
> I'm hoping someone can help me narrow down what I might be looking for.
> Already spent a lot of time trying to get somewhere and still trying to
> step through but using VS2010 and it's slower than ANYTHING ELSE THAT
> EXISTS!!
>
> The problem is that when I load my file I get an, "Access violation - no
> RTTI data," error. Yes, RTTI is turned on and the application actually
> relies upon it very heavily throughout its operation (acyclic visitor is
> a major component). The problem seems to have just cropped up and is
> within code that has previously passed tests.
>
> Best I can do at this point is describe the problem and hope someone has
> an idea of what to look for because I've been inch by inch stepping
> through serialization template code with a debugger that takes 30
> seconds each damn step. I won't be done for hours. (anyone know how to
> speed this bitch up?)
>
> The problem seems to involve a type that I'm using
> save/load_construct_data on. There is a collection of these objects
> that is stored and loaded previously in the file and then I try to load
> a vector of objects that have shared pointers to these previously loaded
> objects on an individual basis.
>
> It was working fine and then I attached more data after the vector. Now
> it throws this exception when I try to load the pointer; before it
> reaches the new code that is otherwise entirely unrelated (it's just an
> object that happens to be stored in the same parent).
>
> If and when I get more information I'll post but for now I'm hoping
> someone can save me some time and frustration. This debugger is the
> slowest damn thing I've ever seen in my life.

I "fixed" this problem (and it was the use of typeid deep inside of the
shared_helper reset() function) by changing the order that I saved
things in a containing object. The two types are completely unrelated
except that they are both contained by the same thing. The only thing I
can think of is that the object I added after these broken ones used
BOOST_CLASS_EXPORT to register and the broken objects are registered at
the beginning with ar.template register<type>(). Is there some weird
way that these two methods can poorly interact or something?

-- 
http://crazyeddiecpp.blogspot.com/

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net