Fast session resumption segfault
    Phil Mayers 
    p.mayers at imperial.ac.uk
       
    Thu Oct 20 18:01:38 CEST 2011
    
    
  
On 10/20/2011 04:26 PM, Alan DeKok wrote:
> Phil Mayers wrote:
>> It's segfaulted a couple of times since then. The most recent occurrence
>> was inside the "detail" module we run in post-auth, and I was able to
>> examine the reply VPs - sure enough, the first VP in the list was a
>> corrupted version of the Cached-Session-Reply VP; the ->next pointer and
>> all the rest of the VPs were intact, but that one VP had corrupted
>> payload, and an absurd length.
>>
>> Weird stuff...
>
>    I put in a hack to set the cached VPs to NULL when the session is
> free'd.  Maybe that will help.
I saw; I was about to apply it and re-build our package, when I had an 
awful thought...
Is it possible that the following sequence of events is occurring:
  1. thread #1: client does session resumption a split second before 
expiry, gets cached VPs
  2. thread #1: blocks (e.g. doing SQL)
  3. thread #2: receives new TLS session, calls SSL_CTX_flush_sessions
  4. thread #2: calls pairfree() on VPs from session 1, now expired
  5. thread #1: resumes - boom
It might explain why it happens very rarely, and why we see it but Alex 
doesn't (load-related - Imperial has a few more students that SOAS IIRC)
    
    
More information about the Freeradius-Devel
mailing list