rieMiner - Solo + pooled Riecoin mining

Current existing mining softwares
Post Reply
Rockhawk
Posts: 48
Joined: 29 Oct 2018, 21:12

Re: rieMiner - Solo + pooled Riecoin mining

Post by Rockhawk » 03 Dec 2018, 23:02

I've made a pull request with some minor fixes, but none of them explain any asserts or seg faults in the default configuration.

I'll keep running in debug to see if I see anything. I also hope you don't have a hardware issue - are you overclocking at all?

Pttn
Posts: 133
Joined: 24 Aug 2018, 13:37

Re: rieMiner - Solo + pooled Riecoin mining

Post by Pttn » 04 Dec 2018, 00:13

Merged, thank you.

I am underclocking and undervolting, but the system should be fairly solid as I do not have issues with it otherwise, it can run Prime95, run games, there is some margin to the voltage, and I mined for months previously without issue and with the same settings. And if there were any issue, it would completely crash instead of producing Segmentation Faults.

I overclock only for benchmarking (2700X @4 GHz). This value is somewhat convenient because I get about 1 block/day at Difficulty 1600 and Sieve 2^31. Though I wonder if it would be much faster if I used DDR4 3200 instead of 2400. However, I am not buying at these crazy prices... I had to recycle from a previous computer.
rieMiner - Riecoin solo + pooled miner
Personal Riecoin page (links, download,...)
freebitco.in - earn up to $200 in BTC each hour!

tgspring
Posts: 7
Joined: 17 Sep 2018, 01:15

Re: rieMiner - Solo + pooled Riecoin mining

Post by tgspring » 04 Dec 2018, 02:06

Code: Select all

admin@DESKTOP-9MIIKSR MINGW64 ~/rieMiner
$ make
g++ -Wall -Wextra -std=gnu++11 -O3 -march=native -c -o main.o main.cpp
g++ -Wall -Wextra -std=gnu++11 -O3 -march=native -c -o Miner.o Miner.cpp
In file included from WorkManager.hpp:6,
                 from Miner.hpp:8,
                 from Miner.cpp:5:
Miner.cpp: In member function 'void Miner::_updateRemainders(uint32_t, uint64_t, uint64_t)':
Miner.cpp:269:70: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'uint64_t' {aka 'long long unsigned int'} [-Wformat=]
     DBG_VERIFY(if (remainder >> cnt != mpz_tdiv_ui(tar, p)) { printf("Remainder check fail %lu != %lu\n", remainder >> cnt, mpz_tdiv_ui(tar, p)); abort();});
                                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~
main.hpp:26:40: note: in definition of macro 'DBG_VERIFY'
 #define DBG_VERIFY(x) if (DEBUG > 1) { x; };
                                        ^
Miner.cpp:285:39: warning: format '%ld' expects argument of type 'long int', but argument 2 has type 'uint64_t' {aka 'long long unsigned int'} [-Wformat=]
     if (index != indexCheck) { printf("Index check fail, p=%ld, i=%ld, start_i=%ld\n", p, i, start_i); abort(); }
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~
main.hpp:26:40: note: in definition of macro 'DBG_VERIFY'
 #define DBG_VERIFY(x) if (DEBUG > 1) { x; };
                                        ^
Miner.cpp:285:39: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'uint64_t' {aka 'long long unsigned int'} [-Wformat=]
     if (index != indexCheck) { printf("Index check fail, p=%ld, i=%ld, start_i=%ld\n", p, i, start_i); abort(); }
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     ~
main.hpp:26:40: note: in definition of macro 'DBG_VERIFY'
 #define DBG_VERIFY(x) if (DEBUG > 1) { x; };
                                        ^
Miner.cpp:285:39: warning: format '%ld' expects argument of type 'long int', but argument 4 has type 'uint64_t' {aka 'long long unsigned int'} [-Wformat=]
     if (index != indexCheck) { printf("Index check fail, p=%ld, i=%ld, start_i=%ld\n", p, i, start_i); abort(); }
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ~~~~~~~
main.hpp:26:40: note: in definition of macro 'DBG_VERIFY'
 #define DBG_VERIFY(x) if (DEBUG > 1) { x; };
                                        ^
g++ -Wall -Wextra -std=gnu++11 -O3 -march=native -c -o StratumClient.o StratumClient.cpp
g++ -Wall -Wextra -std=gnu++11 -O3 -march=native -c -o GBTClient.o GBTClient.cpp
g++ -Wall -Wextra -std=gnu++11 -O3 -march=native -c -o Client.o Client.cpp
g++ -Wall -Wextra -std=gnu++11 -O3 -march=native -c -o tools.o tools.cpp
g++ -Wall -Wextra -std=gnu++11 -O3 -march=native -c -o CpuID.o CpuID.cpp
m4 external/mod_1_4_win.asm >mod_1_4.s
as mod_1_4.s -o mod_1_4.o
rm mod_1_4.s
sed -f external/mod_1_2_avx_win.sed <external/mod_1_2_avx.asm >mod_1_2_avx.asm
m4 mod_1_2_avx.asm >mod_1_2_avx.s
as mod_1_2_avx.s -o mod_1_2_avx.o
rm mod_1_2_avx.s mod_1_2_avx.asm
g++ -Wall -Wextra -std=gnu++11 -O3 -march=native -o rieMiner main.o Miner.o StratumClient.o GBTClient.o Client.o WorkManager.cpp Stats.cpp tools.o CpuID.o mod_1_4.o mod_1_2_avx.o -pthread -ljansson -lcurl -lcrypto -lgmpxx -lgmp -lws2_32

admin@DESKTOP-9MIIKSR MINGW64 ~/rieMiner
Is this right?

Pttn
Posts: 133
Joined: 24 Aug 2018, 13:37

Re: rieMiner - Solo + pooled Riecoin mining

Post by Pttn » 04 Dec 2018, 07:10

tgspring wrote:
04 Dec 2018, 02:06
Is this right?
These are only warnings... Though it could indeed be nice that you fix them eventually, Rockhawk. You should have used Std::Couts or Cerrs.

Also, I caught something else, a true Segmentation Fault this time:

Code: Select all

[0001:43:13] (1-3t/s) = (290.0 12.61 0.530) ; (2-6t) = (78076 3285 163 7 1) | 6.17 h

Thread 34 "rieMinerNew" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff05ffb700 (LWP 27515)]
0x000055555556762f in Miner::_addToPending (ent=23937269, pos=<synthetic pointer>: 6, pending=0x7fff05ffa170, 
    sieve=0x555556222620 "\376\377\377\377\377\375", '\377' <repeats 30 times>, "\376\377\377\377\377\377\377\377\377\377\337", '\377' <repeats 37 times>, "\357", '\377' <repeats 65 times>, "\337\377\377\377\377\377\377\377\377\376\177\377\377\377\377\377\377\377\377\367\377\377\367\377\377\376", '\377' <repeats 24 times>..., this=0x55555561aff0) at Miner.hpp:122
122                             sieve[old >> 3] |= (1 << (old & 7));
(gdb) bt
#0  0x000055555556762f in Miner::_addToPending (ent=23937269, pos=<synthetic pointer>: 6, pending=0x7fff05ffa170,                                                                                                                        
    sieve=0x555556222620 "\376\377\377\377\377\375", '\377' <repeats 30 times>, "\376\377\377\377\377\377\377\377\377\377\337", '\377' <repeats 37 times>, "\357", '\377' <repeats 65 times>, "\337\377\377\377\377\377\377\377\377\376\177\377\377\377\377\377\377\377\377\367\377\377\367\377\377\376", '\377' <repeats 24 times>..., this=0x55555561aff0) at Miner.hpp:122
#1  Miner::_addRegToPending (mask=65535, reg=..., pos=<synthetic pointer>: 6, pending=0x7fff05ffa170, 
    sieve=0x555556222620 "\376\377\377\377\377\375", '\377' <repeats 30 times>, "\376\377\377\377\377\377\377\377\377\377\337", '\377' <repeats 37 times>, "\357", '\377' <repeats 65 times>, "\337\377\377\377\377\377\377\377\377\376\177\377\377\377\377\377\377\377\377\367\377\377\367\377\377\376", '\377' <repeats 24 times>..., this=0x55555561aff0) at Miner.hpp:132
#2  Miner::_processSieve6 (this=0x55555561aff0, 
    sieve=0x555556222620 "\376\377\377\377\377\375", '\377' <repeats 30 times>, "\376\377\377\377\377\377\377\377\377\377\337", '\377' <repeats 37 times>, "\357", '\377' <repeats 65 times>, "\337\377\377\377\377\377\377\377\377\376\177\377\377\377\377\377\377\377\377\367\377\377\367\377\377\376", '\377' <repeats 24 times>..., offsets=<optimized out>, start_i=<optimized out>, end_i=28192750) at Miner.cpp:428
#3  0x000055555556c20f in Miner::_runSieve(SieveInstance&, unsigned int) () at Miner.cpp:472
#4  0x000055555556cf31 in Miner::_verifyThread() () at Miner.cpp:558
#5  0x000055555556edd8 in Miner::process (this=this@entry=0x55555561aff0, block=...) at Miner.cpp:661
#6  0x00005555555882d1 in WorkManager::minerThread() () at /usr/include/c++/8/bits/char_traits.h:285
#7  0x00007ffff794aaff in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#8  0x00007ffff76c5f2a in start_thread (arg=0x7fff05ffb700) at pthread_create.c:463
#9  0x00007ffff75f8edf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) print old
$1 = 23618780
Same parameters as before (Sieve 2^33, 4 Sieve Workers, 16 Threads), after the latest merge. I wait for you if you need that I execute some commands in Gdb.
rieMiner - Riecoin solo + pooled miner
Personal Riecoin page (links, download,...)
freebitco.in - earn up to $200 in BTC each hour!

Rockhawk
Posts: 48
Joined: 29 Oct 2018, 21:12

Re: rieMiner - Solo + pooled Riecoin mining

Post by Rockhawk » 04 Dec 2018, 11:11

Pttn wrote:
04 Dec 2018, 07:10
tgspring wrote:
04 Dec 2018, 02:06
Is this right?
These are only warnings... Though it could indeed be nice that you fix them eventually, Rockhawk. You should have used Std::Couts or Cerrs.
Weird that I don't see these. I guess you must be compiling 64-bit otherwise it wouldn't work, but then why is unsigned long only 32-bits?

Anyway - these messages weren't originally intended to be compiled in, I'll change them to use std::cerr so the warning goes away.
Pttn wrote:
04 Dec 2018, 07:10
Also, I caught something else, a true Segmentation Fault this time:

Code: Select all

[0001:43:13] (1-3t/s) = (290.0 12.61 0.530) ; (2-6t) = (78076 3285 163 7 1) | 6.17 h

Thread 34 "rieMinerNew" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff05ffb700 (LWP 27515)]
0x000055555556762f in Miner::_addToPending (ent=23937269, pos=<synthetic pointer>: 6, pending=0x7fff05ffa170, 
    sieve=0x555556222620 "\376\377\377\377\377\375", '\377' <repeats 30 times>, "\376\377\377\377\377\377\377\377\377\377\337", '\377' <repeats 37 times>, "\357", '\377' <repeats 65 times>, "\337\377\377\377\377\377\377\377\377\376\177\377\377\377\377\377\377\377\377\367\377\377\367\377\377\376", '\377' <repeats 24 times>..., this=0x55555561aff0) at Miner.hpp:122
122                             sieve[old >> 3] |= (1 << (old & 7));
(gdb) bt
#0  0x000055555556762f in Miner::_addToPending (ent=23937269, pos=<synthetic pointer>: 6, pending=0x7fff05ffa170,                                                                                                                        
    sieve=0x555556222620 "\376\377\377\377\377\375", '\377' <repeats 30 times>, "\376\377\377\377\377\377\377\377\377\377\337", '\377' <repeats 37 times>, "\357", '\377' <repeats 65 times>, "\337\377\377\377\377\377\377\377\377\376\177\377\377\377\377\377\377\377\377\367\377\377\367\377\377\376", '\377' <repeats 24 times>..., this=0x55555561aff0) at Miner.hpp:122
#1  Miner::_addRegToPending (mask=65535, reg=..., pos=<synthetic pointer>: 6, pending=0x7fff05ffa170, 
    sieve=0x555556222620 "\376\377\377\377\377\375", '\377' <repeats 30 times>, "\376\377\377\377\377\377\377\377\377\377\337", '\377' <repeats 37 times>, "\357", '\377' <repeats 65 times>, "\337\377\377\377\377\377\377\377\377\376\177\377\377\377\377\377\377\377\377\367\377\377\367\377\377\376", '\377' <repeats 24 times>..., this=0x55555561aff0) at Miner.hpp:132
#2  Miner::_processSieve6 (this=0x55555561aff0, 
    sieve=0x555556222620 "\376\377\377\377\377\375", '\377' <repeats 30 times>, "\376\377\377\377\377\377\377\377\377\377\337", '\377' <repeats 37 times>, "\357", '\377' <repeats 65 times>, "\337\377\377\377\377\377\377\377\377\376\177\377\377\377\377\377\377\377\377\367\377\377\367\377\377\376", '\377' <repeats 24 times>..., offsets=<optimized out>, start_i=<optimized out>, end_i=28192750) at Miner.cpp:428
#3  0x000055555556c20f in Miner::_runSieve(SieveInstance&, unsigned int) () at Miner.cpp:472
#4  0x000055555556cf31 in Miner::_verifyThread() () at Miner.cpp:558
#5  0x000055555556edd8 in Miner::process (this=this@entry=0x55555561aff0, block=...) at Miner.cpp:661
#6  0x00005555555882d1 in WorkManager::minerThread() () at /usr/include/c++/8/bits/char_traits.h:285
#7  0x00007ffff794aaff in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#8  0x00007ffff76c5f2a in start_thread (arg=0x7fff05ffb700) at pthread_create.c:463
#9  0x00007ffff75f8edf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) print old
$1 = 23618780
Same parameters as before (Sieve 2^33, 4 Sieve Workers, 16 Threads), after the latest merge. I wait for you if you need that I execute some commands in Gdb.
Hmm, sieve and old both look fine. If you still have it up, does

Code: Select all

p sieve[old>>3]
execute OK? If so, something weird has happened, because it's segfaulted trying to write to that location, which should be addressable.

Pttn
Posts: 133
Joined: 24 Aug 2018, 13:37

Re: rieMiner - Solo + pooled Riecoin mining

Post by Pttn » 04 Dec 2018, 11:23

Rockhawk wrote:
04 Dec 2018, 11:11
Hmm, sieve and old both look fine. If you still have it up, does

Code: Select all

p sieve[old>>3]
execute OK? If so, something weird has happened, because it's segfaulted trying to write to that location, which should be addressable.
I get

Code: Select all

(gdb) p sieve[old>>3]
$2 = 255 '\377
Is this intended?
Tell me if I can start another session.
rieMiner - Riecoin solo + pooled miner
Personal Riecoin page (links, download,...)
freebitco.in - earn up to $200 in BTC each hour!

Rockhawk
Posts: 48
Joined: 29 Oct 2018, 21:12

Re: rieMiner - Solo + pooled Riecoin mining

Post by Rockhawk » 04 Dec 2018, 12:15

Pttn wrote:
04 Dec 2018, 11:23
Rockhawk wrote:
04 Dec 2018, 11:11
Hmm, sieve and old both look fine. If you still have it up, does

Code: Select all

p sieve[old>>3]
execute OK? If so, something weird has happened, because it's segfaulted trying to write to that location, which should be addressable.
I get

Code: Select all

(gdb) p sieve[old>>3]
$2 = 255 '\377
Is this intended?
Tell me if I can start another session.
Yes, that is what you would expect to be there. So the code has segfaulted on the line:

Code: Select all

sieve[old >> 3] |= (1 << (old & 7));
But in the debugger you can access the memory for sieve[old >> 3] fine. So either the debugger is showing you the wrong line of code that the segfault happened on, or you hit a segfault when you shouldn't have done. The only other memory access around there is

Code: Select all

pending[pos]
so maybe just double check that printing that works ok, but I can't imagine tha tcould possibly be wrong.

Unfortunately this is beginning to look like a hardware issue, although I'm always reluctant to say that! I'll keep running in the debugger and let you know if I see anything.

Pttn
Posts: 133
Joined: 24 Aug 2018, 13:37

Re: rieMiner - Solo + pooled Riecoin mining

Post by Pttn » 04 Dec 2018, 12:48

Code: Select all

(gdb) p pending[pos]
$3 = 23618780
Weird... I guess that I will do some MemTesting...
Rockhawk wrote:
04 Dec 2018, 12:15
Yes, that is what you would expect to be there. So the code has segfaulted on the line:

Code: Select all

sieve[old >> 3] |= (1 << (old & 7));
In another hand, I already had to debug another Segmentation Fault before, and the given line was not at all the culprit.
It was something like Gbd giving me a line where I assigned to a Std::String a value (which would never cause any issue), and even if I set a constant value to that string, it would still SegFault, and if I removed the assignment it would fail somewhere else... The actual error was somewhere else, in a completely different function and source file, where I called a Json_decref once too much...
rieMiner - Riecoin solo + pooled miner
Personal Riecoin page (links, download,...)
freebitco.in - earn up to $200 in BTC each hour!

Pttn
Posts: 133
Joined: 24 Aug 2018, 13:37

Re: rieMiner - Solo + pooled Riecoin mining

Post by Pttn » 04 Dec 2018, 16:38

I reverted your commit "Remove unuse dense limit and tidy up" because it broke mining in Testnet with "Segment 0 1 with index ... is > 1" errors.
At least with Sieve 2^24, 4 Threads. Unlike the Segmentation Faults, this one always happens directly at start of mining.
rieMiner - Riecoin solo + pooled miner
Personal Riecoin page (links, download,...)
freebitco.in - earn up to $200 in BTC each hour!

Rockhawk
Posts: 48
Joined: 29 Oct 2018, 21:12

Re: rieMiner - Solo + pooled Riecoin mining

Post by Rockhawk » 04 Dec 2018, 17:13

That commit did fix a theoretical bug and make the code significantly simpler, so I'd rather it wasn't reverted.

I see the problem too with very small Sieve - was trying to do too much last night! I'll fix it.

Post Reply