So it seems a lot of memory-corrupting conditions exist with our current use of intrusive_ptr:
http://savannah.gnu.org/bugs/index.php?23364 Problem is that in order to avoid circular references by ref-counted objects, we have characters in the "Dictionary" not store a reference to the container by intrusive_ptr, but still we do keep the reference which is used for different things. When top-level movie definitions are dropped, we end up with these references pointing to arbitrary memory, so possibly calling arbitrary pieces of code (we probably never write there). An example is sprite_definition.h. Using intrusive_ptr would be safer, but would never release any loaded movie. This issue only shows up since we limited the MovieLibrary to a given size, as before we never released movie definitions anyway. NOTE that the issue is in 0.8.3 too, and can show up every time the MovieLibrary limit is exceeded (8 by default, changeable by user configuration). So we need a short-term and long-term plan to fix that. For short-term (0.8.3), I guess disabling the MovieLibrary limit would do. What do you think ? --strk; () ASCII Ribbon Campaign /\ Keep it simple! _______________________________________________ Gnash-dev mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gnash-dev

