[CF-Devel] Howto close bugs on sourceforge?

crossfire-devel at archives.real-time.com crossfire-devel at archives.real-time.com
Tue Jan 13 00:36:25 CST 2004


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
     
     
    


More information about the crossfire mailing list