Some new discover I did today: 1) On function do_random(), the 'values' pointer is being corrupted after the rand() syscall - In the failure case. If I remove the rand() function, I do not see corruption.
2) If I get the original 'values' pointer, save it and check it later, it is corrupted also. This guarantee that the there is no one else changing the pointer. So, I suspect that this value is being corrupted during the context switch or vsx unavailable tm (which is being called also). This is the type of the pointer corruption I see: >From 0x7fff80000970 to 0x7fff88000970. Since the array pointer changes, the 'r' value will point to r + the corruption displacement.