I attempted to recreate the problem with the details you provided. Don't use the OR condition. While OR works well enough in most cases, it's what is causing the crashes in your case. Not sure about the other problems. More details are needed, or a cap would be nice.
This seems to have partially resolved the problem, actually. Is there any chance you could explain what it is that prevents the OR condition from working in this situation?
Still pressing on with this, the ghost-line-of-sight bug still seems to be at work.
I've narrowed down one bug pretty far. The error appears to be in this section of code:
(ignore the sub-event for the player-is-in-line-of-sight event, it's for a different system and has been toggled off)
With the code as shown (all other code that refers to the Guard object or any of the families it's in has been toggled off or is in a disabled group, with the exception of a single event to enable me to destroy Enemies by clicking on them, for testing purposes), of the three guards, precisely one will cause the game to crash if he is killed and I walk into his former line of sight. There is no difference between this guard and the other guards, besides a handful of private variables related to currently disabled AI patrol routes. The bug is consistent - if the guard is dead, and the player stands in a place that would have been in the guard's line of sight at the time of his destruction, the game will crash.
There is also a "boss" sprite in the layout that is in the Enemy family, but is not the same object as the guards. Destroying this boss sprite and standing in its line of sight does not crash the game.