From 6425c53d61d848fe073d12e97438e284f272003f Mon Sep 17 00:00:00 2001 From: SChernykh Date: Wed, 16 Jan 2019 00:09:00 +0100 Subject: [PATCH 1/3] Fixed crash in patchCode() on Linux --- src/crypto/asm/cn_main_loop.S | 20 ++++---------------- src/crypto/asm/cn_main_loop.asm | 20 ++++---------------- src/crypto/asm/win64/cn_main_loop.S | 20 ++++---------------- src/crypto/asm/win64/cn_main_loop.asm | 20 ++++---------------- src/workers/CpuThread.cpp | 3 ++- 5 files changed, 18 insertions(+), 65 deletions(-) diff --git a/src/crypto/asm/cn_main_loop.S b/src/crypto/asm/cn_main_loop.S index 1e5610d153..1d52f206d2 100644 --- a/src/crypto/asm/cn_main_loop.S +++ b/src/crypto/asm/cn_main_loop.S @@ -23,10 +23,7 @@ FN_PREFIX(cnv2_mainloop_ivybridge_asm): #include "cn2/cnv2_main_loop_ivybridge.inc" add rsp, 48 ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE ALIGN(64) FN_PREFIX(cnv2_mainloop_ryzen_asm): @@ -35,10 +32,7 @@ FN_PREFIX(cnv2_mainloop_ryzen_asm): #include "cn2/cnv2_main_loop_ryzen.inc" add rsp, 48 ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE ALIGN(64) FN_PREFIX(cnv2_mainloop_bulldozer_asm): @@ -47,10 +41,7 @@ FN_PREFIX(cnv2_mainloop_bulldozer_asm): #include "cn2/cnv2_main_loop_bulldozer.inc" add rsp, 48 ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE ALIGN(64) FN_PREFIX(cnv2_double_mainloop_sandybridge_asm): @@ -60,7 +51,4 @@ FN_PREFIX(cnv2_double_mainloop_sandybridge_asm): #include "cn2/cnv2_double_main_loop_sandybridge.inc" add rsp, 48 ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE diff --git a/src/crypto/asm/cn_main_loop.asm b/src/crypto/asm/cn_main_loop.asm index 47b4df9e4c..2b7a1f469a 100644 --- a/src/crypto/asm/cn_main_loop.asm +++ b/src/crypto/asm/cn_main_loop.asm @@ -8,40 +8,28 @@ ALIGN(64) cnv2_mainloop_ivybridge_asm PROC INCLUDE cn2/cnv2_main_loop_ivybridge.inc ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE cnv2_mainloop_ivybridge_asm ENDP ALIGN(64) cnv2_mainloop_ryzen_asm PROC INCLUDE cn2/cnv2_main_loop_ryzen.inc ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE cnv2_mainloop_ryzen_asm ENDP ALIGN(64) cnv2_mainloop_bulldozer_asm PROC INCLUDE cn2/cnv2_main_loop_bulldozer.inc ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE cnv2_mainloop_bulldozer_asm ENDP ALIGN(64) cnv2_double_mainloop_sandybridge_asm PROC INCLUDE cn2/cnv2_double_main_loop_sandybridge.inc ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE cnv2_double_mainloop_sandybridge_asm ENDP _TEXT_CNV2_MAINLOOP ENDS diff --git a/src/crypto/asm/win64/cn_main_loop.S b/src/crypto/asm/win64/cn_main_loop.S index 90e43470cd..bb0a581d1d 100644 --- a/src/crypto/asm/win64/cn_main_loop.S +++ b/src/crypto/asm/win64/cn_main_loop.S @@ -10,34 +10,22 @@ ALIGN(64) cnv2_mainloop_ivybridge_asm: #include "../cn2/cnv2_main_loop_ivybridge.inc" ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE ALIGN(64) cnv2_mainloop_ryzen_asm: #include "../cn2/cnv2_main_loop_ryzen.inc" ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE ALIGN(64) cnv2_mainloop_bulldozer_asm: #include "../cn2/cnv2_main_loop_bulldozer.inc" ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE ALIGN(64) cnv2_double_mainloop_sandybridge_asm: #include "../cn2/cnv2_double_main_loop_sandybridge.inc" ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE diff --git a/src/crypto/asm/win64/cn_main_loop.asm b/src/crypto/asm/win64/cn_main_loop.asm index 9c8a6ea9c5..40cb1cac85 100644 --- a/src/crypto/asm/win64/cn_main_loop.asm +++ b/src/crypto/asm/win64/cn_main_loop.asm @@ -8,40 +8,28 @@ ALIGN 64 cnv2_mainloop_ivybridge_asm PROC INCLUDE cn2/cnv2_main_loop_ivybridge.inc ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE cnv2_mainloop_ivybridge_asm ENDP ALIGN 64 cnv2_mainloop_ryzen_asm PROC INCLUDE cn2/cnv2_main_loop_ryzen.inc ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE cnv2_mainloop_ryzen_asm ENDP ALIGN 64 cnv2_mainloop_bulldozer_asm PROC INCLUDE cn2/cnv2_main_loop_bulldozer.inc ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE cnv2_mainloop_bulldozer_asm ENDP ALIGN 64 cnv2_double_mainloop_sandybridge_asm PROC INCLUDE cn2/cnv2_double_main_loop_sandybridge.inc ret 0 - nop - nop - nop - nop + mov eax, 0xDEADC0DE cnv2_double_mainloop_sandybridge_asm ENDP _TEXT_CNV2_MAINLOOP ENDS diff --git a/src/workers/CpuThread.cpp b/src/workers/CpuThread.cpp index 5b7016e42d..082effe2de 100644 --- a/src/workers/CpuThread.cpp +++ b/src/workers/CpuThread.cpp @@ -69,9 +69,10 @@ static void patchCode(T dst, U src, const uint32_t iterations, const uint32_t ma # endif size_t size = 0; - while (*(uint32_t*)(p + size) != 0x90909090) { + while (*(uint32_t*)(p + size) != 0xDEADC0DE) { ++size; } + size += sizeof(uint32_t); memcpy((void*) dst, (const void*) src, size); From d1f551da2c377c645f61ac4324e736c4ae9a751b Mon Sep 17 00:00:00 2001 From: SChernykh Date: Wed, 16 Jan 2019 00:24:34 +0100 Subject: [PATCH 2/3] Fixed compilation error on Windows --- src/crypto/asm/cn_main_loop.S | 8 ++++---- src/crypto/asm/cn_main_loop.asm | 8 ++++---- src/crypto/asm/win64/cn_main_loop.S | 8 ++++---- src/crypto/asm/win64/cn_main_loop.asm | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/crypto/asm/cn_main_loop.S b/src/crypto/asm/cn_main_loop.S index 1d52f206d2..a792337f08 100644 --- a/src/crypto/asm/cn_main_loop.S +++ b/src/crypto/asm/cn_main_loop.S @@ -23,7 +23,7 @@ FN_PREFIX(cnv2_mainloop_ivybridge_asm): #include "cn2/cnv2_main_loop_ivybridge.inc" add rsp, 48 ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 ALIGN(64) FN_PREFIX(cnv2_mainloop_ryzen_asm): @@ -32,7 +32,7 @@ FN_PREFIX(cnv2_mainloop_ryzen_asm): #include "cn2/cnv2_main_loop_ryzen.inc" add rsp, 48 ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 ALIGN(64) FN_PREFIX(cnv2_mainloop_bulldozer_asm): @@ -41,7 +41,7 @@ FN_PREFIX(cnv2_mainloop_bulldozer_asm): #include "cn2/cnv2_main_loop_bulldozer.inc" add rsp, 48 ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 ALIGN(64) FN_PREFIX(cnv2_double_mainloop_sandybridge_asm): @@ -51,4 +51,4 @@ FN_PREFIX(cnv2_double_mainloop_sandybridge_asm): #include "cn2/cnv2_double_main_loop_sandybridge.inc" add rsp, 48 ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 diff --git a/src/crypto/asm/cn_main_loop.asm b/src/crypto/asm/cn_main_loop.asm index 2b7a1f469a..f1384be80e 100644 --- a/src/crypto/asm/cn_main_loop.asm +++ b/src/crypto/asm/cn_main_loop.asm @@ -8,28 +8,28 @@ ALIGN(64) cnv2_mainloop_ivybridge_asm PROC INCLUDE cn2/cnv2_main_loop_ivybridge.inc ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 cnv2_mainloop_ivybridge_asm ENDP ALIGN(64) cnv2_mainloop_ryzen_asm PROC INCLUDE cn2/cnv2_main_loop_ryzen.inc ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 cnv2_mainloop_ryzen_asm ENDP ALIGN(64) cnv2_mainloop_bulldozer_asm PROC INCLUDE cn2/cnv2_main_loop_bulldozer.inc ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 cnv2_mainloop_bulldozer_asm ENDP ALIGN(64) cnv2_double_mainloop_sandybridge_asm PROC INCLUDE cn2/cnv2_double_main_loop_sandybridge.inc ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 cnv2_double_mainloop_sandybridge_asm ENDP _TEXT_CNV2_MAINLOOP ENDS diff --git a/src/crypto/asm/win64/cn_main_loop.S b/src/crypto/asm/win64/cn_main_loop.S index bb0a581d1d..1200c4dfea 100644 --- a/src/crypto/asm/win64/cn_main_loop.S +++ b/src/crypto/asm/win64/cn_main_loop.S @@ -10,22 +10,22 @@ ALIGN(64) cnv2_mainloop_ivybridge_asm: #include "../cn2/cnv2_main_loop_ivybridge.inc" ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 ALIGN(64) cnv2_mainloop_ryzen_asm: #include "../cn2/cnv2_main_loop_ryzen.inc" ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 ALIGN(64) cnv2_mainloop_bulldozer_asm: #include "../cn2/cnv2_main_loop_bulldozer.inc" ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 ALIGN(64) cnv2_double_mainloop_sandybridge_asm: #include "../cn2/cnv2_double_main_loop_sandybridge.inc" ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 diff --git a/src/crypto/asm/win64/cn_main_loop.asm b/src/crypto/asm/win64/cn_main_loop.asm index 40cb1cac85..846b860c81 100644 --- a/src/crypto/asm/win64/cn_main_loop.asm +++ b/src/crypto/asm/win64/cn_main_loop.asm @@ -8,28 +8,28 @@ ALIGN 64 cnv2_mainloop_ivybridge_asm PROC INCLUDE cn2/cnv2_main_loop_ivybridge.inc ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 cnv2_mainloop_ivybridge_asm ENDP ALIGN 64 cnv2_mainloop_ryzen_asm PROC INCLUDE cn2/cnv2_main_loop_ryzen.inc ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 cnv2_mainloop_ryzen_asm ENDP ALIGN 64 cnv2_mainloop_bulldozer_asm PROC INCLUDE cn2/cnv2_main_loop_bulldozer.inc ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 cnv2_mainloop_bulldozer_asm ENDP ALIGN 64 cnv2_double_mainloop_sandybridge_asm PROC INCLUDE cn2/cnv2_double_main_loop_sandybridge.inc ret 0 - mov eax, 0xDEADC0DE + mov eax, 3735929054 cnv2_double_mainloop_sandybridge_asm ENDP _TEXT_CNV2_MAINLOOP ENDS From b11e772accf854aa9940e8a92d830921388e93e8 Mon Sep 17 00:00:00 2001 From: XMRig Date: Wed, 16 Jan 2019 09:17:35 +0700 Subject: [PATCH 3/3] v2.9.2 --- CHANGELOG.md | 3 +++ src/version.h | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f08f9db5c9..5f1caca0be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# v2.9.2 +- [#907](https://github.com/xmrig/xmrig/pull/907) Fixed crash on Linux. + # v2.9.1 - Restored compatibility with https://stellite.hashvault.pro. diff --git a/src/version.h b/src/version.h index f3bb1dcc68..7f910bd55e 100644 --- a/src/version.h +++ b/src/version.h @@ -28,7 +28,7 @@ #define APP_ID "xmrig" #define APP_NAME "XMRig" #define APP_DESC "XMRig CPU miner" -#define APP_VERSION "2.9.1" +#define APP_VERSION "2.9.2" #define APP_DOMAIN "xmrig.com" #define APP_SITE "www.xmrig.com" #define APP_COPYRIGHT "Copyright (C) 2016-2019 xmrig.com" @@ -36,7 +36,7 @@ #define APP_VER_MAJOR 2 #define APP_VER_MINOR 9 -#define APP_VER_PATCH 1 +#define APP_VER_PATCH 2 #ifdef _MSC_VER # if (_MSC_VER >= 1910)