Nope we think we have identified the leak. On CPU realize (ppc_cpu_realize) the translator sets up its tables (create_ppc_opcodes). This will happen for each thread created. This would be fine but linux_user cpu_copy function then does:
memcpy(new_env, env, sizeof(CPUArchState));
which will blindly overwrite the tables in CPUArchState (CPUPPCState) causing the leak. The suggestion is the data should be moved to PowerPCCPU (as it is internal to the translator) and avoid being smashed by the memcpy. However longer term we should replace the memcpy with an arch aware smart copy.
Nope we think we have identified the leak. On CPU realize (ppc_cpu_realize) the translator sets up its tables (create_ ppc_opcodes) . This will happen for each thread created. This would be fine but linux_user cpu_copy function then does:
memcpy(new_env, env, sizeof( CPUArchState) );
which will blindly overwrite the tables in CPUArchState (CPUPPCState) causing the leak. The suggestion is the data should be moved to PowerPCCPU (as it is internal to the translator) and avoid being smashed by the memcpy. However longer term we should replace the memcpy with an arch aware smart copy.