Its not exactly a "stack"
You of course are familiar with the standard C runtime model where each lexical scope (theoretically) pushes a stack frame for local variable/context storage.
Smalltalk's "stack frames" are called activation records and they are not necessarily stored in a stack - its rather more like a list/net/tree/spaghetti. This makes non-local returns/exceptions/block closures/continuations/suspend and slap a debugger around it all possible. Its also necessary where you have block closures - you have the code for the block, but you'll also have an activation record for each invocation of the block.
Smalltalk is dangerous. It is a drug. My advice to you would be don't try it; it could ruin your life. Once you take the time to learn it (to REALLY learn it) you will see that there is nothing out there (yet) to touch it. Of course, like all drugs, how dangerous it is depends on your character. It may be that once you've got to this stage you'll find it difficult (if not impossible) to "go back" to other languages and, if you are forced to, you might become an embittered character constantly muttering ascerbic comments under your breath. Who knows, you may even have to quit the software industry altogether because nothing else lives up to your new expectations.
--AndyBower