![]() If you are faced with a stack overflow, then, you want to ignore the top of the stack, since that's just focusing on the specific note that exceeded your vocal range. In real life, the loop can be quite long, leading to dozens of potential points where the stack overflow can manifest itself. The "recursion" in this analogy was rather quick, just eight bars before the loop repeated. In other words, the same underlying runaway recursion (musically represented by an ever-higher rendition of the melody) can manifest itself in five different ways. If the melody represented a program's stack usage, a stack overflow could possibly occur at any of those five locations in the program's execution. In the melody, the first three notes are each a new "record high" (i.e., the notes are higher than any other note sung so far), and new record highs appear in the three notes of the third measure, and a final record high in the second note of the fifth measure. Eventually, you will reach the top of your singing range, and precisely where that happens depends on where your vocal limit lines up against the melody. Suppose you're singing the song Frère Jacques, except that you sing each verse a few tones higher than the previous one. ![]() That's because stack overflows tend to happen at a random point in the recursion each stack overflow looks superficially different from every other one even if they are the same stack overflow. If you go hunting through your defect tracking database trying to see whether this is a known issue or not, a search for the top functions on the stack is unlikely to find anything interesting. Take a look at Raymond Chen's post When debugging a stack overflow, you want to focus on the repeating recursive part.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |