RFR: 8335906: [s390x] Test Failure: GTestWrapper.java

Amit Kumar amitkumar at openjdk.org
Tue Jul 9 05:18:03 UTC 2024


PAT_1 is fine because only 1 element is there, i.e. last element: 

[debug] u.c[idx] =   6a,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  j value =   6a, v =   6a 
[debug] u.c[idx] =   64,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  d value =   64, v =   64 
[debug] u.c[idx] =   6b,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  k value =   6b, v =   6b 
[debug] u.c[idx] =   2f,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  / value =   2f, v =   2f 
[debug] u.c[idx] =   69,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  i value =   69, v =   69 
[debug] u.c[idx] =   6e,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  n value =   6e, v =   6e 
[debug] u.c[idx] =   74,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  t value =   74, v =   74 
[debug] u.c[idx] =   65,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  e value =   65, v =   65 
[debug] u.c[idx] =   72,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  r value =   72, v =   72 
[debug] u.c[idx] =   6e,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  n value =   6e, v =   6e 
[debug] u.c[idx] =   61,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  a value =   61, v =   61 
[debug] u.c[idx] =   6c,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  l value =   6c, v =   6c 


issue starts when array `u.c` size increases; 

PAT_2:
[debug] u.c[idx] =   64,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 1,  d value = 6a64, v = 6a64 
[debug] u.c[idx] =   6a,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 2,  j value = 6a64, v = 6a64 
[debug] u.c[idx] =   2f,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 1,  / value = 6b2f, v = 6b2f 
[debug] u.c[idx] =   6b,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 2,  k value = 6b2f, v = 6b2f 
[debug] u.c[idx] =   6e,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 1,  n value = 696e, v = 696e 
[debug] u.c[idx] =   69,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 2,  i value = 696e, v = 696e 
[debug] u.c[idx] =   65,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 1,  e value = 7465, v = 7465 
[debug] u.c[idx] =   74,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 2,  t value = 7465, v = 7465 
[debug] u.c[idx] =   6e,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 1,  n value = 726e, v = 726e 
[debug] u.c[idx] =   72,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 2,  r value = 726e, v = 726e 
[debug] u.c[idx] =   6c,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 1,  l value = 616c, v = 616c 
[debug] u.c[idx] =   61,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 2,  a value = 616c, v = 616c 
[debug] u.c[idx] =   6c,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 1,  l value = 2f6c, v = 2f6c 



[debug] u.c[idx] =   64,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 1,  d value = 6a64, v = 6a64 
[debug] u.c[idx] =   6a,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 2,  j value = 6a64, v = 6a64 

It should have been interpreted as `6a` and then `64` but chronology is reversed here. Issue is that we are reading the array in reverse order. Which is what, this patch is fixing. Instead of reading the array from back, We will find the location of location of element, respective to the iteration. i.e. in this case we will find the index of `6a` for `0th` iteration and pick index of `64` for `1st` iteration. 

With Fix:

PAT_1:

[debug] u.c[idx] =   6a,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  j value =   6a, v =   6a 
[debug] u.c[idx] =   64,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  d value =   64, v =   64 
[debug] u.c[idx] =   6b,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  k value =   6b, v =   6b 
[debug] u.c[idx] =   2f,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  / value =   2f, v =   2f 
[debug] u.c[idx] =   69,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  i value =   69, v =   69 
[debug] u.c[idx] =   6e,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  n value =   6e, v =   6e 
[debug] u.c[idx] =   74,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  t value =   74, v =   74 
[debug] u.c[idx] =   65,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  e value =   65, v =   65 
[debug] u.c[idx] =   72,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  r value =   72, v =   72 
[debug] u.c[idx] =   6e,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  n value =   6e, v =   6e 
[debug] u.c[idx] =   61,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  a value =   61, v =   61 
[debug] u.c[idx] =   6c,  sizeof(u.v) = 8, unitsize = 1 , i+1 = 1,  l value =   6c, v =   6c 



PAT_2:
[debug] u.c[idx] =   6a,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 1,  j value = 6a64, v = 6a64 
[debug] u.c[idx] =   64,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 2,  d value = 6a64, v = 6a64 
[debug] u.c[idx] =   6b,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 1,  k value = 6b2f, v = 6b2f 
[debug] u.c[idx] =   2f,  sizeof(u.v) = 8, unitsize = 2 , i+1 = 2,  / value = 6b2f, v = 6b2f 



PAT_3:
[debug] u.c[idx] =   23,  sizeof(u.v) = 8, unitsize = 4 , i+1 = 1,  # value = 23006a64, v = 23006a64 
[debug] u.c[idx] =    0,  sizeof(u.v) = 8, unitsize = 4 , i+1 = 2,   value = 23006a64, v = 23006a64 
[debug] u.c[idx] =   6a,  sizeof(u.v) = 8, unitsize = 4 , i+1 = 3,  j value = 23006a64, v = 23006a64 
[debug] u.c[idx] =   64,  sizeof(u.v) = 8, unitsize = 4 , i+1 = 4,  d value = 23006a64, v = 23006a64 
[debug] u.c[idx] =   6b,  sizeof(u.v) = 8, unitsize = 4 , i+1 = 1,  k value = 6b2f696e, v = 6b2f696e 
[debug] u.c[idx] =   2f,  sizeof(u.v) = 8, unitsize = 4 , i+1 = 2,  / value = 6b2f696e, v = 6b2f696e 
[debug] u.c[idx] =   69,  sizeof(u.v) = 8, unitsize = 4 , i+1 = 3,  i value = 6b2f696e, v = 6b2f696e 
[debug] u.c[idx] =   6e,  sizeof(u.v) = 8, unitsize = 4 , i+1 = 4,  n value = 6b2f696e, v = 6b2f696e 



PAT_4:

[debug] u.c[idx] =   ff,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 1,  ? value = ffffe0dc23006a64, v = ffffe0dc23006a64 
[debug] u.c[idx] =   ff,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 2,  ? value = ffffe0dc23006a64, v = ffffe0dc23006a64 
[debug] u.c[idx] =   e0,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 3,  ? value = ffffe0dc23006a64, v = ffffe0dc23006a64 
[debug] u.c[idx] =   dc,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 4,  ? value = ffffe0dc23006a64, v = ffffe0dc23006a64 
[debug] u.c[idx] =   23,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 5,  # value = ffffe0dc23006a64, v = ffffe0dc23006a64 
[debug] u.c[idx] =    0,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 6,   value = ffffe0dc23006a64, v = ffffe0dc23006a64 
[debug] u.c[idx] =   6a,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 7,  j value = ffffe0dc23006a64, v = ffffe0dc23006a64 
[debug] u.c[idx] =   64,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 8,  d value = ffffe0dc23006a64, v = ffffe0dc23006a64 
[debug] u.c[idx] =   6b,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 1,  k value = 6b2f696e7465726e, v = 6b2f696e7465726e 
[debug] u.c[idx] =   2f,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 2,  / value = 6b2f696e7465726e, v = 6b2f696e7465726e 
[debug] u.c[idx] =   69,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 3,  i value = 6b2f696e7465726e, v = 6b2f696e7465726e 
[debug] u.c[idx] =   6e,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 4,  n value = 6b2f696e7465726e, v = 6b2f696e7465726e 
[debug] u.c[idx] =   74,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 5,  t value = 6b2f696e7465726e, v = 6b2f696e7465726e 
[debug] u.c[idx] =   65,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 6,  e value = 6b2f696e7465726e, v = 6b2f696e7465726e 
[debug] u.c[idx] =   72,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 7,  r value = 6b2f696e7465726e, v = 6b2f696e7465726e 
[debug] u.c[idx] =   6e,  sizeof(u.v) = 8, unitsize = 8 , i+1 = 8,  n value = 6b2f696e7465726e, v = 6b2f696e7465726e 



Maybe I understood whole thing incorrectly, So I'm open for suggestions.

-------------

Commit messages:
 - fix

Changes: https://git.openjdk.org/jdk/pull/20089/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20089&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8335906
  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/20089.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/20089/head:pull/20089

PR: https://git.openjdk.org/jdk/pull/20089


More information about the hotspot-runtime-dev mailing list