Thanks for pointing me to the right direction. I managed to get some debugging done.
First of all, both these devices use Dalvik and not ART (Java VM version 1.6.0). So it might be a Dalvik bug as you had guessed three months ago. Furthermore, whenever something weird starts to happen (e.g. path constraint starts to spazz out as demonstrated here), dalvikvm logs this:
I/dalvikvm: Total arena pages for JIT: 11
I/dalvikvm: Total arena pages for JIT: 12
Though I'm not completely certain they are connected.
The retraction of the path is caused by all the path bones ending up with the same position. I logged values in PathConstraint.java and the positions array starts to get the same values over and over again. In computeWorldPositions I saw Infinity values in the curves array, which originate (I assume) from this for loop. Now, weirdly enough I was able to get rid of the retraction and Infinity values by creating a new array in that for loop. Not sure if it has something to do with memory allocation.
I also tried the fix described in the previous GitHub issue, but it didn't seem to have any effect.
I'm still not sure why the path constraint starts to spazz out in the first place, but I'll continue debugging and report any further findings.
EDIT:
Here's a GIF demonstrating the issue
Loading Image
Right, I think I'm onto something. There are equal X and Y values in the positions array, for example:
[-12.075218, 186.22685, 0.0, 10.506663, 159.59001, 0.0, 38.70494, 133.08276, 0.0, 61.72608, 107.631035, 0.0, 62.584953, 81.71552, 0.0, 62.584953, 81.71552, 0.0, 62.584953, 81.71552, 0.0, 62.584953, 81.71552, 0.0, -92.54314, 49.60201, -2.9448001, 0.0, 0.0]
In this array there are multiple values of x = 62.584953 and y = 81.71552.
Now when boneX and boneY get reassigned, in the next loop we start getting 0.0 values. The calculations get screwed up and the result is that bone properties a and c get values 0.0. This is exactly when the path constraint twitches and goes nuts.
So the question is why there are equal values in the positions array. The computeWorldPositions calculations look pretty complex but I'll try to get something out of them tomorrow.