[issue9136] RuntimeError when profiling Decimal
report at bugs.python.org
Thu Jul 1 13:48:53 CEST 2010
Mark Dickinson <dickinsm at gmail.com> added the comment:
Ah, it looks like 'locals()' is somewhat magical. Its docstring says:
"Update and return a dictionary containing the current scope's local variables."
So I think this explains your (Stefan's) results: in either case, you evaluate locals() (as the target of the for statement) and get a dictionary back. But that dictionary isn't updated to include 'name' and 'val' until you call locals() for a second time. (And possibly there are other activities besides an explicit locals() call that would cause that dict to be updated, but I'm not sure.)
I still don't understand how things work when profile is added into the mix, but I'm willing to accept that the profile module affects locals() in strange and possibly timing-dependent ways.
Anyway, the fix for decimal is clear: get rid of that locals call.
stage: unit test needed -> needs patch
Python tracker <report at bugs.python.org>
More information about the Python-bugs-list