As a programmer you certainly know the error of a stack overflow due to an obvious recursion.
But there are certainly many weird and unusual ways to get your favourite language to spit that error out. 

Objectives: 

 1. Must cause a stack overflow which is clearly visible on the error output.
 2. Not allowed to use an obvious recursion.

Examples of invalid programs:

    // Invalid, direct obvious recursion.
    methodA(){ methodA(); }

<!-- -->

    // Invalid, indirect, but obvious recursion.
    methodA(){ methodB(); }
    methodB(){ methodA(); }

The most creative ways are the best as this a [tag:popularity-contest]. I.e, avoid boring obvious answers like this:

    throw new StackOverflowError(); // Valid, but very boring and downvote-deserving.

Even though I accepted an answer now, adding more answers is still okay :)