mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-11 07:17:58 +00:00
The cpu mining work data can get modified before we copy it if we submit it async, and the sync submission is not truly sync anyway, so just submit it sync.
This commit is contained in:
parent
af15955b78
commit
021b2c0d7a
38
main.c
38
main.c
@ -3243,42 +3243,6 @@ err_out:
|
||||
return false;
|
||||
}
|
||||
|
||||
struct swa {
|
||||
struct thr_info *thr;
|
||||
const struct work *work_in;
|
||||
};
|
||||
|
||||
static void *swasync_thread(void *userdata)
|
||||
{
|
||||
struct swa *swa = (struct swa *)userdata;
|
||||
|
||||
/* Return value ignored */
|
||||
submit_work_sync(swa->thr, swa->work_in);
|
||||
free(swa);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static bool submit_work_async(struct thr_info *thr, const struct work *work_in)
|
||||
{
|
||||
pthread_t sw_thread;
|
||||
struct swa *swa;
|
||||
|
||||
swa = malloc(sizeof(struct swa));
|
||||
if (unlikely(!swa)) {
|
||||
applog(LOG_ERR, "Failed to malloc swa in submit_work_async");
|
||||
return false;
|
||||
}
|
||||
|
||||
swa->thr = thr;
|
||||
swa->work_in = work_in;
|
||||
|
||||
if (unlikely(pthread_create(&sw_thread, NULL, swasync_thread, (void *)swa))) {
|
||||
applog(LOG_ERR, "Failed to create swasync_thread");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool submit_nonce(struct thr_info *thr, struct work *work, uint32_t nonce)
|
||||
{
|
||||
work->data[64+12+0] = (nonce>>0) & 0xff;
|
||||
@ -3469,7 +3433,7 @@ static void *miner_thread(void *userdata)
|
||||
if (unlikely(rc)) {
|
||||
if (opt_debug)
|
||||
applog(LOG_DEBUG, "CPU %d found something?", dev_from_id(thr_id));
|
||||
if (unlikely(!submit_work_async(mythr, work))) {
|
||||
if (unlikely(!submit_work_sync(mythr, work))) {
|
||||
applog(LOG_ERR, "Failed to submit_work_sync in miner_thread %d", thr_id);
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user