This looks useful (better debuggability is a big thing for me), but I'm not sure when or from where this caller_stack function gets called. Could you add a simple test case? Just paste in a SConstruct that should trigger it if you want.
You insert it as a debug statement when you're debugging who is calling your function. For example, I want to see what is the top command that resulted in initialization of config in roundup. I insert pprint(caller_stack()) in to configuration.Config.init and receive the following output: