No, frame in the middle can not be deleted, because call stack is a stack. Only a stack pointer pointing to top of a stack (and optionally frame pointer that points to beginning of last frame) are maintained. As frame is "deleted" (return from function), only these pointers are moved and next allocated frame will overwrite this.
This thread (and few others) explains why longjmp can't violate this behavior. In short, setjmp stores frame position, but if frame itself has been overwritten, this fails. And goto can't jump to a different function.