Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free.

I face strange behavior of do/while statement on Galaxy S5 and Android 5.1.1. If you have any information, let me know.

int i = 0;
int j = 0;

do {
    Log.d(TAG, "[test do-while 1] i = " + i + ", j = " + j);
    i = 0;
    Log.d(TAG, "[test do-while 2] i = " + i + ", j = " + j);
    i++;
    Log.d(TAG, "[test do-while 3] i = " + i + ", j = " + j);
    i++;
    Log.d(TAG, "[test do-while 4] i = " + i + ", j = " + j);
    j++;
    Log.d(TAG, "[test do-while 5] i = " + i + ", j = " + j);
} while (j < 5);

If I will run the program on Galaxy S5 with Android 5.1.1, output log is as follows.

D/MainActivity( 9856): [test do-while 1] i = 2, j = 0
D/MainActivity( 9856): [test do-while 2] i = 2, j = 0
D/MainActivity( 9856): [test do-while 3] i = 2, j = 0
D/MainActivity( 9856): [test do-while 4] i = 2, j = 0
D/MainActivity( 9856): [test do-while 5] i = 2, j = 1
D/MainActivity( 9856): [test do-while 1] i = 2, j = 1
D/MainActivity( 9856): [test do-while 2] i = 2, j = 1
D/MainActivity( 9856): [test do-while 3] i = 2, j = 1
D/MainActivity( 9856): [test do-while 4] i = 2, j = 1
D/MainActivity( 9856): [test do-while 5] i = 2, j = 2
D/MainActivity( 9856): [test do-while 1] i = 2, j = 2
D/MainActivity( 9856): [test do-while 2] i = 2, j = 2
D/MainActivity( 9856): [test do-while 3] i = 2, j = 2
D/MainActivity( 9856): [test do-while 4] i = 2, j = 2
D/MainActivity( 9856): [test do-while 5] i = 2, j = 3
D/MainActivity( 9856): [test do-while 1] i = 2, j = 3
D/MainActivity( 9856): [test do-while 2] i = 2, j = 3
D/MainActivity( 9856): [test do-while 3] i = 2, j = 3
D/MainActivity( 9856): [test do-while 4] i = 2, j = 3
D/MainActivity( 9856): [test do-while 5] i = 2, j = 4
D/MainActivity( 9856): [test do-while 1] i = 2, j = 4
D/MainActivity( 9856): [test do-while 2] i = 2, j = 4
D/MainActivity( 9856): [test do-while 3] i = 2, j = 4
D/MainActivity( 9856): [test do-while 4] i = 2, j = 4
D/MainActivity( 9856): [test do-while 5] i = 2, j = 5

If I will run the same program on other device or other o/s version, output is as follows.

D/MainActivity( 9515): [test do-while 1] i = 0, j = 0
D/MainActivity( 9515): [test do-while 2] i = 0, j = 0
D/MainActivity( 9515): [test do-while 3] i = 1, j = 0
D/MainActivity( 9515): [test do-while 4] i = 2, j = 0
D/MainActivity( 9515): [test do-while 5] i = 2, j = 1
D/MainActivity( 9515): [test do-while 1] i = 2, j = 1
D/MainActivity( 9515): [test do-while 2] i = 0, j = 1
D/MainActivity( 9515): [test do-while 3] i = 1, j = 1
D/MainActivity( 9515): [test do-while 4] i = 2, j = 1
D/MainActivity( 9515): [test do-while 5] i = 2, j = 2
D/MainActivity( 9515): [test do-while 1] i = 2, j = 2
D/MainActivity( 9515): [test do-while 2] i = 0, j = 2
D/MainActivity( 9515): [test do-while 3] i = 1, j = 2
D/MainActivity( 9515): [test do-while 4] i = 2, j = 2
D/MainActivity( 9515): [test do-while 5] i = 2, j = 3
D/MainActivity( 9515): [test do-while 1] i = 2, j = 3
D/MainActivity( 9515): [test do-while 2] i = 0, j = 3
D/MainActivity( 9515): [test do-while 3] i = 1, j = 3
D/MainActivity( 9515): [test do-while 4] i = 2, j = 3
D/MainActivity( 9515): [test do-while 5] i = 2, j = 4
D/MainActivity( 9515): [test do-while 1] i = 2, j = 4
D/MainActivity( 9515): [test do-while 2] i = 0, j = 4
D/MainActivity( 9515): [test do-while 3] i = 1, j = 4
D/MainActivity( 9515): [test do-while 4] i = 2, j = 4
D/MainActivity( 9515): [test do-while 5] i = 2, j = 5
  • If we convert the code to while or for statement, the issue does not occur.
  • If we make a own log library with sync file i/o, the issue occur.
  • Does not occur on Galaxy S4 and S6 or Android 5.0.2.
share|improve this question
    
Are you able to test it on another device running the Snapdragon 801 processor (like the S5)? (see https://www.qualcomm.com/products/snapdragon/devices/all?processor=801). It may be an optimization issue. –  VirtualMichael 11 hours ago

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.