Bruno Haible wrote: > Rich Felker wrote: >> The problem was an obscure pointer-arithmetic overflow ... >> where the stack pointer is near the 4GB boundary. > > This explains also why it occurred only with a certain probability > outside gdb, but with 100% probability from within gdb: Apparently gdb > runs the program without address space layout randomization.
That is correct. It is a feature of gdb-7.0 and newer. You can inspect (watch/break-at/etc.) the same address and expect it to refer to the same memory location in multiple invocations. This makes gdb's command-line history even more useful.