nice find, just checked yiimp, no amd stats available
I think I might be getting part of the picture. I found no mention of 50 submits in the miner code so I presume
it comes from the pool. I assume the pool requests the data after 50 submits in the session.
I can't yet connect it to AMD or timetravel or the program exiting.
After a quick look at the stratum code it doesn't look like it would exit or exit without a message
if stats fail. I also didn't find anything that would single out AMD other than reporting it in the stats.
And I didn't find anything that would connect to timetravel other than simly reporting it.
It looks like we found the trigger only. Removing the trigger may make the problem disappear for
now but I think this needs to be understood better.
I do have a lead in this area. Timetravel has a local function to swap 2 variables using a temp. I replaced
it with an oiptimized version that doesn't require the use of a temp. X11evo has a similar function and when
I tried to implement the optimized version it segfaulted. I'm wondering if there is a macro issue affecting
operator precedence. I've never had a good understanding of all the parentheses needed in c but it seems
like I should encapsulate the args in the macro...
#define swap_vars(a,b) a^=b; b^=a; a^=b;
#define swap_vars(a,b) (a)^=(b); (b)^=(a); (a)^=(b);
I'd like to leave the trigger in place to help get to the root problem.
Edit:
It still segfaults on x11evo with the macro change so it's a problem with the macro. This makes the
connection to timetravel. There is still no connection to AMD. That technique for swapping variables is tried and
true so it's starting to look like a compiler issue, possibly related to passing an expression as the arg instead
of a simple arg. Encapsulating the args should ensure they are fully evaluated before being used by the macro.
That this macro also has problems on Intel suggests it's not limited to AMD. Encapsulating the macro's args
should have eliminated any expansion weirdness due to the args being expressions rather than simple variables.
It's starting to look like the compiler messed up unless I missing something.
Any thoughts on passing expressions as arguments to macros?
Edit: more weird behaviour. Evaluating the args to local variables then passing the variables to the macro changed the
behaviour. It no longer crashed but produced only rejects. This change had an effect but it disn't fix iteven though the
change should have had no effect. It looks like this macro is cursed.