It only snaps when you want to do an operation, like line from a to b. Are other snaps activated at the same time? Does it snap there? Keep free snap on all the time.
Edit: If you have Snap on Entity on also, it accepts any position on an entity, even if other snaps are active. That's probably the reason. So Snap on Entity only if you definitely need it.