Segmentation fault on conflicting packet

Alan Dekok aland at deployingradius.com
Sun Jun 10 16:05:46 CEST 2007


Milan Holub wrote:
> I'm using cvs build based on cvs head on May 29 2007.
> I'm running it under conditions close to production(40 auth
> requests/hour, 700 accounting requests/hour).

   That's a pretty low load, but still useful for testing.

> Most of the time it's doing well but I've observed already multiple
> times following behaviour:
> 
...
> 2007-05-31 06:18:14.885099500 Received conflicting packet from client <SHORTNAME> port 33499 - ID: 0 due to unfinished request 11920.Giving up on old request.

   The client appears to be broken, OR the checks for conflicting 
packets are broken.

> 2007-05-31 06:18:14.885168500 Failed to insert request 11921 in the list of live requests: discarding

   That's a pretty catastrophic error.  I'm not sure why it's happening, 
because the "conflicting packet" checks are *supposed* to delete the old 
request from the list of current packeys.

>>> SEQMENTATION FAULT...

   Ugh.  Maybe valgrind would help here.

> If you check the timeline we've received conclicting packet after
> 0.000696 sec. Which I think was a duplicate packet due to some network
> problem.

   If it really was a duplicate, then it shouldn't be "conflicting".  It 
should be marked 'duplicate".  The code should handle this, and it was 
tested to handle this.

> Packet 11920 was in the middle of processing(finished writing
> into detail file, but not yet written to database). Segmentation fault
> occured when another request was received.

   Because that code path isn't well tested.

> I was not able to simulate by sending duplicate packets via radclient. I
> think the sensitive part is receiving duplicate packet during the
> processing of original packet.

   valgrind.  Write a config that does "sleep 10", to slow down the 
processing to human speeds.  Then use a client to send *new* packets 
with same src/dst ip/port, and same RADIUS Id.

   Alan DeKok.



More information about the Freeradius-Users mailing list