"Frederic Bouvier" writes:

> Curtis L. Olson wrote:
> 

> > As I understand it, the deadbeef thing is something ssg writes into
> > memory that it frees.  Later if you try to traverse something that is
> > marked as deadbeef, you know you have a pointer to deallocated memory.
> > This is typically what triggers the deadbeef assertion.
> >
> > My guess (and this is a guess) is that the ai system is loading a single
> > model of an aircraft and  using it in multiple places.  Then, if for
> > some reason all the aircraft of a certain type fly out of range and we
> > remove them from the tree, ssg could try to free the model itself if the
> > last reference to it is removed.
> >
> > But, if the ai system doesn't account for this and later tries to use
> > that same model pointer, you will get the deadbeef error  (notice
> > deadbeef is a hexidecimal number).
> >
> > What you do to work around this problem is to ref() the model once when
> > you load it, then you can add and remove it from the scene graph as much
> > as you like, delete the parent of the model, etc. etc. and the number of
> > references will never drop below one, so the model itself will never be
> > deleted.
> >
> > That's pure speculation though based only on the crash appearing to
> > happen in the AI system.
> 
> Indeed, I don't see _defaultModel->ref(); or _piperModel->ref(); in
> AIMgr.cxx
> 

ref() is in AIEntity::SetModel, and deref() is in AIEntity dtor.  I guess this is 
definately something that I've screwed up somewhere though :-(

Cheers - Dave

_______________________________________________
Flightgear-devel mailing list
[EMAIL PROTECTED]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel

Reply via email to