I guess your problem is more a linguistic one - the term "logic error" is very vague, and the term "time when it happens" can mean different things to different people.
Let's say you write a simple calculator program. It will allow you to enter something like "1+2" by the keyboard, calculate and display the result. Now you enter "1+2" and it displays not the expected value 3, but 4. So exactly "when" does this logic error happen? From the users point of view, it happens just when he or she sees the wrong result.
But the cause can be anywhere beforehand - the input data could be parsed wrong, the calculation itself could have gone wrong, or the display on the screen had a bug. So from the users point of view, the cause for the error is somewhere "before it happens". However, from a developers point of view who uses a debugger single-stepping through the program, the "state of the execution of the program" is wrong immediately at the time when the input parser delivers a wrong result, or the calculation delivers a wrong result, or the code bringing the result to the display does something wrong. So from this perspective, the logic error's cause is exactly where the internal state of the program deviates from the expected value.