drab wrote:In other threads, I have reported several problems getting SYMBOL TABLE FULL. Unsurprisingly, those problems all involved large mixed or nested arrays.
Being unable to run some of my functions because of this, I tried re-writing one of them the long way to completely avoid mixed and nested arrays.
It STILL hit SYMBOL TABLE FULL.
So, I tried ripping stuff out of that function in an effort to isolate the problem. I got it down to a fairly small nonsense function that always causes SYMBOL TABLE FULL when run in a clear ws. It does use a large array of complex numbers, but it has no mixed or nested arrays. I can't quite tell how the symbols are getting used up.
Here's the function:
try;⎕io s s2 c x j c1 x1 z
The reason you are running afoul of STF error is that assignments into c1
are FLT scalars into a named object, so they generate a new STE if the FLT value is not already in the table (there's no reason you would know this). As these value range all over the place, they are filling up the STE and HTE tables.
I tried your function with the Win32 version:
0.5.2.0 Sun Mar 19 01:50:10 2017 Win/32
SymTab: Maximum # Entries 65536, Current 4291, In Use 193
HshTab: Maximum # Entries 524288, Current 131072, In Use 193
SymTab: Maximum # Entries 131072, Current 131072, In Use 65534
HshTab: Maximum # Entries 524288, Current 524288, In Use 65534
and with the Win64 version:
0.5.2.0 Sun Mar 19 01:50:22 2017 Win/64
SymTab: Maximum # Entries 262144, Current 4286, In Use 188
HshTab: Maximum # Entries 2097152, Current 131072, In Use 188
SymTab: Maximum # Entries 524288, Current 524288, In Use 262142
HshTab: Maximum # Entries 2097152, Current 1114112, In Use 262142
I suspect you have many other symbols used in your test workspace which causes it to fail. However, the point is not that it happens to work for me on my systems, but that given that it fails on your system, you can push the problem back using the command line switches -symtabsize=NNN
. Remember, those values are in units of 1024 entries and that the default values are both 256.
command enhancements to resize the tables are in the queue. However, even if that feature were ready right now, it would be a convenience only in that you wouldn't have to save your work and exit and restart the interpreter. In the meantime, the command lines switches are the way to get around this problem.