Re: Segmentation fault on conflicting packet



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.




This archive was generated by a fusion of Pipermail (Mailman edition) and MHonArc.