This can happen when a script crashes (*). Here is a work around to recover the undo stack, using the Python console(**).
- Start the python console, from any image: Filters>Python-fu-console
- Copy the following line exactly:
for img in gimp.image_list(): img.undo_thaw()
- Strike [enter] twice: after first it will display "...", after second it will display "True" or "False", once for each image.
- Close the python console
Warning, this re-enables the undo stack on all images, do not execute if scripts are running.
(*) scripts routinely freeze the undo stack, because it's not useful to allow undo/redo on operations performed by the script, while saving the data for undo/redo takes time and memory. OF course the undo stack has to be "thawed" on exit, which is what happens when the script terminates normally but it can crash before it reaches that instruction.
(**) I assume someone will come up with the equivalent rain dance for the script-fu console, for the Python-phobic ones