When running in synchronous mode (non-stealth), the Echion Python thread raced with the clean-up done on stop. In particular, the frame cache would be looked up while being torn down, because the Python thread could have taken some extra cycles to shut down. We ensure that the clean up of resources required for sampling are cleaned up after the sampling loop has terminated to avoid accessing data that might have been released from memory.
When running in synchronous mode (non-stealth), the Echion Python thread raced with the clean-up done on stop. In particular, the frame cache would be looked up while being torn down, because the Python thread could have taken some extra cycles to shut down. We ensure that the clean up of resources required for sampling are cleaned up after the sampling loop has terminated to avoid accessing data that might have been released from memory.