the mixing of local variables, parameters, and return addresses all on the same stack causes so many security problems. e.g. https://en.wikipedia.org/wiki/Return-oriented_programming
i can only hope that in time we'll view mixing return addresses and data on the same stack with the same distaste as many other flawed practices ... like zero terminated strings, or storing passwords in plaintext.