mirror of
				https://git.wownero.com/wownero/wownero.git
				synced 2024-08-15 01:03:23 +00:00 
			
		
		
		
	Merge pull request #8811
c742fa4 Fixed deadlock and crash when syncing with full dataset on Windows (SChernykh)
			
			
This commit is contained in:
		
						commit
						2f62dd5b78
					
				
					 2 changed files with 8 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -42,10 +42,11 @@
 | 
			
		|||
#define CTHR_RWLOCK_TRYLOCK_READ(x)	TryAcquireSRWLockShared(&x)
 | 
			
		||||
 | 
			
		||||
#define CTHR_THREAD_TYPE	HANDLE
 | 
			
		||||
#define CTHR_THREAD_RTYPE	void
 | 
			
		||||
#define CTHR_THREAD_RETURN	return
 | 
			
		||||
#define CTHR_THREAD_CREATE(thr, func, arg)	((thr = (HANDLE)_beginthread(func, 0, arg)) != -1L)
 | 
			
		||||
#define CTHR_THREAD_JOIN(thr)			WaitForSingleObject((HANDLE)thr, INFINITE)
 | 
			
		||||
#define CTHR_THREAD_RTYPE	unsigned __stdcall
 | 
			
		||||
#define CTHR_THREAD_RETURN	_endthreadex(0); return 0;
 | 
			
		||||
#define CTHR_THREAD_CREATE(thr, func, arg)	((thr = (HANDLE)_beginthreadex(0, 0, func, arg, 0, 0)) != 0L)
 | 
			
		||||
#define CTHR_THREAD_JOIN(thr)			do { WaitForSingleObject(thr, INFINITE); CloseHandle(thr); } while(0)
 | 
			
		||||
#define CTHR_THREAD_CLOSE(thr)			CloseHandle((HANDLE)thr);
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -64,5 +65,6 @@
 | 
			
		|||
#define CTHR_THREAD_RETURN	return NULL
 | 
			
		||||
#define CTHR_THREAD_CREATE(thr, func, arg)	(pthread_create(&thr, NULL, func, arg) == 0)
 | 
			
		||||
#define CTHR_THREAD_JOIN(thr)			pthread_join(thr, NULL)
 | 
			
		||||
#define CTHR_THREAD_CLOSE(thr)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -332,7 +332,7 @@ static void rx_init_dataset(size_t max_threads) {
 | 
			
		|||
      local_abort("Couldn't start RandomX seed thread");
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  rx_seedthread(&si[n1]);
 | 
			
		||||
  randomx_init_dataset(main_dataset, si[n1].si_cache, si[n1].si_start, si[n1].si_count);
 | 
			
		||||
  for (size_t i = 0; i < n1; ++i) CTHR_THREAD_JOIN(st[i]);
 | 
			
		||||
  CTHR_RWLOCK_UNLOCK_READ(main_cache_lock);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -402,6 +402,7 @@ void rx_set_main_seedhash(const char *seedhash, size_t max_dataset_init_threads)
 | 
			
		|||
  if (!CTHR_THREAD_CREATE(t, rx_set_main_seedhash_thread, info)) {
 | 
			
		||||
    local_abort("Couldn't start RandomX seed thread");
 | 
			
		||||
  }
 | 
			
		||||
  CTHR_THREAD_CLOSE(t);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void rx_slow_hash(const char *seedhash, const void *data, size_t length, char *result_hash) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue