Openj9: openjdk8_j9_special.system_x86-64_windows MauveMultiThreadLoadTest InputStreamReader.utf8

Created on 9 Sep 2019  路  15Comments  路  Source: eclipse/openj9

08:29:24  To rebuild the failed test in a jenkins job, copy the following link and fill out the <Jenkins URL> and <FAILED test target>:
08:29:24  <Jenkins URL>/parambuild/?JDK_VERSION=8&JDK_IMPL=openj9&BUILD_LIST=system/mauveLoadTest&Jenkinsfile=openjdk_x86-64_windows&TARGET=<FAILED test target>

https://ci.eclipse.org/openj9/job/Test_openjdk8_j9_special.system_x86-64_windows_Nightly/220
MauveMultiThreadLoadTest_special_20
05:20:41 variation: Mode557
05:20:41 JVM_OPTIONS: -Xcompressedrefs -XX:+UseCompressedOops -Xgcpolicy:balanced -Xdebug -Xrunjdwp:transport=dt_socket,address=8888,server=y,onthrow=no.pkg.foo,launch=echo -Xjit:count=0

05:22:54  LT  04:22:59.355 - Test failed
05:22:54  LT    Failure num.  = 1
05:22:54  LT    Test number   = 90
05:22:54  LT    Test details  = 'Mauve[gnu.testlet.java.io.InputStreamReader.utf8]'
05:22:54  LT    Suite number  = 0
05:22:54  LT    Thread number = 2
05:22:54  LT  >>> Captured test output >>>
05:22:54  LT  FAIL: gnu.testlet.java.io.InputStreamReader.utf8: UTF-8 decoder finished (number 0)
test failure

Most helpful comment

The test seems bogus in that ok should either be volatile or use synchronization to update and check it in the different threads. Also it uses a hard coded timeout. I'm thinking we should just exclude it.
@Mesbah-Alam

All 15 comments

@kobinau Could you take a look?

Building and running a grinder

https://hyc-runtimes-jenkins.swg-devops.com/view/Test_grinder/job/Grinder/3189/
The Grinder was aborted. But from the output we had 43 successful runs.
I tried testing from parallel runs, but it also didn't generate any similar failures.

Haven't seen any new failures and it couldn't be reproduced. Closing until it's seen again.

https://ci.eclipse.org/openj9/job/Test_openjdk8_j9_special.system_x86-64_linux_Nightly/617
MauveMultiThreadLoadTest_special_15
variation: Mode554
JVM_OPTIONS: -Xcompressedrefs -Xcompressedrefs -Xgcpolicy:balanced -XXgc:tarokEnableExpensiveAssertions,fvtest_tarokPGCRotateCollectors -Xjit:count=0,optlevel=hot,gcOnResolve,rtResolve

@liqunl @kobinau Can you pick up the investigation on this again?

I've been running Grinders with no success at resimulation. Speaking to @liqunl to discuss further.

@JasonFengJ9 can you please take a look at the test and confirm it's valid to run multi-threaded.

Here is the test code.

public class utf8 implements Testlet, Runnable
{
  TestHarness harness;
  boolean ok = false;

  public void test (TestHarness h)
  {
    harness = h;
    Thread t = new Thread(this);
    t.start();

    // Wait a few seconds for the thread to finish.
    try
      {
        t.join(3 * 1000);
      }
    catch (InterruptedException ie)
      {
        harness.debug("Interrupted: " + ie);
      }
    harness.check(ok, "UTF-8 decoder finished");

    if (!ok)
      t.interrupt();
  }

  public void run()
  {
    try
      {
        PipedOutputStream  pos = new PipedOutputStream();
        OutputStreamWriter osw = new OutputStreamWriter(pos, "UTF-8");
        PrintWriter        ps  = new PrintWriter(osw);

        PipedInputStream   pis = new PipedInputStream(pos);
        InputStreamReader  isr = new InputStreamReader(pis, "UTF-8");
        char[]  buf = new char[256];
        int     read;

        ps.print("0123456789ABCDEF");
        ps.flush();

        // Read much more then we actually expect (16 characters).
        read = isr.read(buf, 0, 256);
        harness.check(read, 16, "16 characters read");
        ok = true;
      }
    catch (IOException ioe)
      {
        harness.debug(ioe);
        harness.check(false, "IOException in run()");
      }
  }
}

It is not obvious that the problem could be caused by multi-threaded load tests.

The test seems bogus in that ok should either be volatile or use synchronization to update and check it in the different threads. Also it uses a hard coded timeout. I'm thinking we should just exclude it.
@Mesbah-Alam

https://ci.eclipse.org/openj9/job/Test_openjdk8_j9_special.system_ppc64_aix_Nightly/71

LT  01:21:29.308 - Starting thread. Suite=0 thread=6
LT  01:21:54.805 - First failure detected by thread: load-3. Not creating dumps as no dump generation is requested for this load test
LT  01:21:54.883 - suite.getInventory().getInventoryFileRef(): openjdk.test.load/config/inventories/mauve/mauve_multiThread.xml
LT  01:21:54.898 - suite.isCreateDump() : false
LT  01:21:54.961 - Test failed
LT    Failure num.  = 1
LT    Test number   = 90
LT    Test details  = 'Mauve[gnu.testlet.java.io.InputStreamReader.utf8]'
LT    Suite number  = 0
LT    Thread number = 3
LT  >>> Captured test output >>>
LT  FAIL: gnu.testlet.java.io.InputStreamReader.utf8: UTF-8 decoder finished (number 0)
LT  <<<
LT  

@Mesbah-Alam are you going to exclude this test?

The test has been excluded. This PR can be closed now.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

markehammons picture markehammons  路  63Comments

M-Davies picture M-Davies  路  76Comments

ChengJin01 picture ChengJin01  路  238Comments

zl-wang picture zl-wang  路  94Comments

pshipton picture pshipton  路  59Comments