Find an IP address which you think has been assigned to two people. Look through the logs for that IP address. You will see FreeRADIUS assigning the IP to the user. The Access-Accept will contain the IP, and a Session-Timeout.
I wish I wouldn't have a timeout though .. anyhow The only thing with "Access-Accept" in the radius.log file I see is the result of [sql] expand: INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ( '%{User-Name}', '%{%{User-Password}:-%{Chap-Password}}', '%{reply:Packet-Type}', '%S')
Next, look for accounting packets for that user, which contain the IP. This means that the NAS has still marked the IP as active for the user.
How would those look ?
Next, look for an accounting packet for that user which contains the IP, and is "Acct-Status-Type = Stop". If it appears, FreeRADIUS should mark that IP as free.
PPPoE radius # grep -i "Acct-Status-Type" radius.log Yells nothing .. for noone .. I might not have it enabled ?
So... what NAS are you using? Is it doing RADIUS properly?
I'm using rp-pppoe with the radius plugin http://www.roaringpenguin.com/products/pppoe I think it's doing it right ..