Issue 19393: symtable.symtable can return the wrong "top" SymbolTable (original) (raw)

The attached script creates calls symtable.symtable many times on a code snippet that contains a single class with a method called "top", and some other important (to trigger the behaviour) properties:

The symtable module is reloaded each time, which seems to exacerbate the problem, but it not necessary.

The return value of symtable.symtable is sometimes a SymbolTable object, as expected, and sometimes a symtable.Function object.

Here is some example output from the script:

c:\Python27>python.exe C:\Temp\symtable_weirdness.py Counter({'SymbolTable': 59, 'Function': 41})

c:\Python33>python.exe C:\Temp\symtable_weirdness.py Counter({'SymbolTable': 89, 'Function': 11})

The values are consistent between runs, but can be changed by altering PYTHONHASHSEED between runs.