Going off topic here ... this reminds me of a problem on the final exam for my assembly language programming course in college. We were given a sample of code and asked questions about what it would do. Part of the program contained a JSR - jump to subroutine - instruction. But the code that was "jumped" to ended with an RTI - return from interrupt! I remember thinking .. you can't DO that! But of course, you can. And it had some useful result - removing two numbers from the stack instead of one (or vice versa) - a clever little hack that saved a step or two in the program. This bug showed a similar symptom - loss of data in returned values - but I doubt the cause is the same. But it gave me a chance to tell a story about learning the difference between what my mental model thought code did and what it actually did!