Nicolas Weeger wrote: > David Seikel a écrit : > >> [ 777151 ] Bone Crusher is called 772697802? >> >> I could not recreate this, is it fixed already? > > > I _think_ this one is/was related to memory shortage. > Now whether it is fixed or not i don't know. I doubt this is related to memory shortage. Enough of the crossfire malloc routines check to see if the malloc failed, and would promptly exit the program if in fact memory is exhausted. The screwed up names is almost caused by the name string getting freed. Since shared string library is used, if that shared string is freed, that memory might then get allocated for something else, but objects are still pointing to the now differently used data for a name, and it obviously doesn't work. Such bugs are very difficult to catch. Because it almost is never the call to free_string that is the problem - it is that maybe someone called 'free' and not 'free_string'. Or maybe the object was copied, but add_refcount was called to increase the refcount of the strings, so when that copied object is freed, the refcount on the string is reduced - if this is done enough, that string gets freed. The other problem where this was originally seen was in the size of tracking number of shared strings. IT was something like 14 bits (2 bits used for flags I think) - with the big world maps, certainly possible if enough maps were in memroy at one time for some common archs to get overflowed. And with that size, if there were potential leaks in the opposite direction (refcount getting increased over and over, and not decreased), it could wrap in the other direction also. Now that refcount is 30 bits, the likelihood of overflows is very low. One could argue that given that string usage isn't that much more than in the 'old' days, but amount of system ram has drastically increased, using a shared string library doesn't make a lot of sense. _______________________________________________ crossfire-devel mailing list crossfire-devel at lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel