The problem is that eclipse stops in your "removed" break-point in an other thread.
So if you have, for example 10 threads, and the debugger is stopped in a breakpoint that you have placed then ,even if you remove the breakpoint , the debugger will stop at the place where the breakpoint used to be in the rest 9 threads
If you choose to stop the entire VM when a breakpoint is hit, then other threads will not reach that breakpoint (since they are suspended) and you will not get this strange behavior
In order to change Suspend scope, right click on the breakpoint ==> properties
=> select relevant radio option
Suspend thread/VM : These are radio buttons. By default debugger will
only suspend the thread in which breakpoint is hit. However, if you
select the radio box Suspend VM, then all threads will be suspended
when breakpoint is hit.