[patch] Memcached UDP
    Steven Grimm 
    sgrimm at facebook.com
       
    Mon Dec 17 00:52:55 UTC 2007
    
    
  
Part of this patch is wrong and will introduce failures. It changes  
the flow of control from
clean up connection data structure
if connection input buffer size is over a threshold, free the conn  
structure
else add it to the freelist
to
clean up connection data structure
add connection to the freelist
if connection input buffer size is over a threshold, free the conn  
structure
The problem is that if the buffer size is large, the freelist now  
contains a pointer to freed memory which will doubtless be allocated  
to something else at some point.
The other part of the patch (allocating a msghdr if needed) seems  
harmless to me. I haven't seen the failure mode it's apparently  
intended to address -- the UDP protocol is running fine on our  
network, processing billions of requests a day with no crashes or  
bogus responses -- but it doesn't seem like it can hurt anything and  
is probably a smart sanity check.
Any chance you (or the original author) can supply a test case to  
demonstrate the UDP failures? I saw Tomash Brechko's translation  
(thanks!) but the problem description is too vague.
-Steve
    
    
More information about the memcached
mailing list