Certain data-structures within the simulator are required on a per-thread basis. An example of this is the rootset; each thread has it's own rootset. However, the number of threads is currently hard-coded in defines.hpp. This means that no matter how many threads are defined in a tracefile, there will room for a constant (currently 50) number of threads reserved in the simulation.
This is not such a big problem with tracefiles containing fewer than the maximum number of threads, but becomes an issue when tracefiles with more threads than the current maximum are being processed.
A solution to this problem is to allow the number of threads to grow dynamically throughout the simulation.