On some systems, such uclinux, program may be run on the different addresses from time to time. Current GDB is unable to update breakpoint locations when program is re-run on different address. Some state in breakpoint location is lost during re-running new program. Some discussions can be found in this thread http://sourceware.org/ml/gdb-patches/2011-06/msg00335.html
Specifically, GDB is able to recreate the locations, but is unable to match new locations with old locations, and so state such as which locations were disabled is lost.