diff --git a/src/miner.cpp b/src/miner.cpp index b1a4b917f..11aae8122 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -1122,6 +1122,7 @@ void static RandomXMiner() int randomxInterval = GetArg("-ac_randomx_interval",1024); // This lag is 80 mins for 75s blocktime and 64 mins for 60s (default) blocktime for HSCs int randomxBlockLag = GetArg("-ac_randomx_lag", 64); + randomx_vm *myVM = nullptr; try { // fprintf(stderr,"RandomXMiner: mining %s with randomx\n",SMART_CHAIN_SYMBOL); @@ -1198,7 +1199,7 @@ void static RandomXMiner() // randomx_init_dataset(randomxDataset, randomxCache, 0, datasetItemCount); rxdebug("%s: dataset initialized\n"); - randomx_vm *myVM = randomx_create_vm(flags, nullptr, randomxDataset); + myVM = randomx_create_vm(flags, nullptr, randomxDataset); if(myVM == NULL) { LogPrintf("RandomXMiner: Cannot create RandomX VM, aborting!\n"); return; @@ -1425,10 +1426,12 @@ void static RandomXMiner() miningTimer.stop(); c.disconnect(); + randomx_destroy_vm(myVM); + LogPrintf("%s: destroyed vm via thread interrupt\n", __func__); randomx_release_dataset(randomxDataset); - rxdebug("%s: released dataset\n"); + rxdebug("%s: released dataset via thread interrupt\n"); randomx_release_cache(randomxCache); - rxdebug("%s: released cache\n"); + rxdebug("%s: released cache via thread interrupt\n"); LogPrintf("HushRandomXMiner terminated\n"); throw; @@ -1437,18 +1440,20 @@ void static RandomXMiner() c.disconnect(); fprintf(stderr,"RandomXMiner: runtime error: %s\n", e.what()); + randomx_destroy_vm(myVM); + LogPrintf("%s: destroyed vm because of error\n", __func__); randomx_release_dataset(randomxDataset); - rxdebug("%s: released dataset\n"); + rxdebug("%s: released dataset because of error\n"); randomx_release_cache(randomxCache); - rxdebug("%s: released cache\n"); + rxdebug("%s: released cache because of error\n"); return; } randomx_release_dataset(randomxDataset); - rxdebug("%s: released dataset\n"); + rxdebug("%s: released dataset in normal exit\n"); randomx_release_cache(randomxCache); - rxdebug("%s: released cache\n"); + rxdebug("%s: released cache in normal exit\n"); miningTimer.stop(); c.disconnect(); }