This is another one I found whilst implementing the spec. A rather confusing one to be honest 😓
Effectively if you take the frame at the beginning of the instruction, you may be executing inside an imported function and thus have a different module instance in your stack frame. As part of finding the handler, you unwind the stack and exit this imported function but you are still referencing its module instance. When you then perform the check that attempts to match the tag you would be looking up tag within the wrong module instance.
This is another one I found whilst implementing the spec. A rather confusing one to be honest 😓
Effectively if you take the frame at the beginning of the instruction, you may be executing inside an imported function and thus have a different module instance in your stack frame. As part of finding the handler, you unwind the stack and exit this imported function but you are still referencing its module instance. When you then perform the check that attempts to match the tag you would be looking up tag within the wrong module instance.
This test helped me find it: