I had a hub connected with a dhcp server(debian 8) and two hosts A and B, as B's interface was shut down at the beginning. Then I had dhcp-server give host A 192.168.2.170
automatically, at that time everything worked well. Next I set the interface of B with the same IP 192.168.2.170
manually, and enabled that interface, host B can ping the server (with maybe 40% loss), but host A would still be able to renew that 192.168.2.170
from server successfully roughly every 10 mins each time (I tried 5+ times). Eventually, server would abandon IP 192.168.2.170
and allocate another IP to host A in each try, but still after an unpredictable time period, from 2 mins to 15 mins.
In my opinion, as the 2131 says, server will ping that IP before send it to client, and once that ICMP is replied, server will send another IP. So in my case I think server should be able to detect that conflict as soon as it first time received the request from client, and send a new IP. But server still ACK that IP for many times before it does ICMP check and allocate new one.