Since our discussion shows that there is no solid and bullet-proof solution for killed buffers problem (IMHO), I would like to propose an alternate (less effective, but safe) solution: when the window dies, it's prev_buffers and next_buffers are set to nil, but both buffer lists are saved in struct saved_window just for the sake of possible resurrection. Martin said that the most of window-configuration objects are created with 'save-window-excursion' and so they're short-lived objects which tends to not survive next GC. So, if deleted window isn't recorded in window-configuration object or such an object dies quickly, we're lucky; otherwise, the only thing we can do is to hope that recorded window will be resurrected and Lisp code from window.el will take care about the contents of it's buffer lists. Dmitry