Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6595669
Votes 0
Synopsis regtest LinkedBlockingQueue/OfferRemoveLoops.java fails
Category java:classes_util_concurrent
Reported Against b01
Release Fixed 7(b25)
State 10-Fix Delivered, bug
Priority: 3-Medium
Related Bugs
Submit Date 22-AUG-2007
Description
JDK		    : Fails:  jdk7, 6ur
Platform[s]         : Fails On: Solaris x86 10 and 11
Failing Test [s]    : java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java

    Test source location:
    =====================
/net/cady/export/jdk/7/promoted/latest/ws/j2se/test/java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java

    jtr file location:
    ==================
See attachment

    How to reproduce:
    ====================
    - Set JAVA_HOME to jdk7 b16 solaris-i586
    - cd /net/cady/export/jdk/7/promoted/latest/ws/j2se/test/java/util/concurrent/LinkedBlockingQueue
    - /net/koori/onestop/jct-tools/3.2.2_02/promoted/fcs/latest/binaries/solaris/bin/jtreg -r:/tmp -w:/tmp ./OfferRemoveLoops.java

    Test output:
    =============
----------System.out:(9/308)----------
class java.util.concurrent.LinkedBlockingQueue
class java.util.concurrent.LinkedBlockingQueue
class java.util.concurrent.LinkedBlockingDeque
class java.util.concurrent.LinkedBlockingDeque
class java.util.concurrent.ArrayBlockingQueue
class java.util.concurrent.PriorityBlockingQueue

Passed = 6, failed = 6

----------System.err:(91/5254)----------
java.lang.Exception: Stack trace
	at java.lang.Thread.dumpStack(Thread.java:1231)
	at OfferRemoveLoops.fail(OfferRemoveLoops.java:50)
	at OfferRemoveLoops.check(OfferRemoveLoops.java:52)
	at OfferRemoveLoops.testQueue(OfferRemoveLoops.java:43)
	at OfferRemoveLoops.realMain(OfferRemoveLoops.java:12)
	at OfferRemoveLoops.main(OfferRemoveLoops.java:58)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:623)
	at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:78)
	at java.lang.Thread.run(Thread.java:644)
java.lang.Exception: Stack trace
	at java.lang.Thread.dumpStack(Thread.java:1231)
	at OfferRemoveLoops.fail(OfferRemoveLoops.java:50)
	at OfferRemoveLoops.check(OfferRemoveLoops.java:52)
	at OfferRemoveLoops.testQueue(OfferRemoveLoops.java:44)
	at OfferRemoveLoops.realMain(OfferRemoveLoops.java:12)
	at OfferRemoveLoops.main(OfferRemoveLoops.java:58)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:623)
	at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:78)
	at java.lang.Thread.run(Thread.java:644)
java.lang.Exception: Stack trace
	at java.lang.Thread.dumpStack(Thread.java:1231)
	at OfferRemoveLoops.fail(OfferRemoveLoops.java:50)
	at OfferRemoveLoops.check(OfferRemoveLoops.java:52)
	at OfferRemoveLoops.testQueue(OfferRemoveLoops.java:43)
	at OfferRemoveLoops.realMain(OfferRemoveLoops.java:14)
	at OfferRemoveLoops.main(OfferRemoveLoops.java:58)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:623)
	at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:78)
	at java.lang.Thread.run(Thread.java:644)
java.lang.Exception: Stack trace
	at java.lang.Thread.dumpStack(Thread.java:1231)
	at OfferRemoveLoops.fail(OfferRemoveLoops.java:50)
	at OfferRemoveLoops.check(OfferRemoveLoops.java:52)
	at OfferRemoveLoops.testQueue(OfferRemoveLoops.java:44)
	at OfferRemoveLoops.realMain(OfferRemoveLoops.java:14)
	at OfferRemoveLoops.main(OfferRemoveLoops.java:58)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:623)
	at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:78)
	at java.lang.Thread.run(Thread.java:644)
java.lang.Exception: Stack trace
	at java.lang.Thread.dumpStack(Thread.java:1231)
	at OfferRemoveLoops.fail(OfferRemoveLoops.java:50)
	at OfferRemoveLoops.check(OfferRemoveLoops.java:52)
	at OfferRemoveLoops.testQueue(OfferRemoveLoops.java:43)
	at OfferRemoveLoops.realMain(OfferRemoveLoops.java:16)
	at OfferRemoveLoops.main(OfferRemoveLoops.java:58)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:623)
	at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:78)
	at java.lang.Thread.run(Thread.java:644)
java.lang.Exception: Stack trace
	at java.lang.Thread.dumpStack(Thread.java:1231)
	at OfferRemoveLoops.fail(OfferRemoveLoops.java:50)
	at OfferRemoveLoops.check(OfferRemoveLoops.java:52)
	at OfferRemoveLoops.testQueue(OfferRemoveLoops.java:44)
	at OfferRemoveLoops.realMain(OfferRemoveLoops.java:16)
	at OfferRemoveLoops.main(OfferRemoveLoops.java:58)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:623)
	at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:78)
	at java.lang.Thread.run(Thread.java:644)
java.lang.Exception: Some tests failed
	at OfferRemoveLoops.main(OfferRemoveLoops.java:61)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:623)
	at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:78)
	at java.lang.Thread.run(Thread.java:644)
Posted Date : 2007-08-22 01:38:39.0
Work Around
N/A
Evaluation
I cannot reproduce this.
It all seems to work reliably on my solaris-x86 machine "lasker".
On what sorts of machines does it fail?
In what build did it start failing?
Does the machine have to be "loaded" to exhibit failure?
Does the machine have to be single-CPU exhibit failure?
Posted Date : 2007-08-22 03:27:02.0

> On what sorts of machines does it fail?
All of my test machines are Pentium 3's.

> In what build did it start failing?
It started to fail in Mustang.

> Does the machine have to be "loaded" to exhibit failure?
No.

> Does the machine have to be single-CPU exhibit failure?
All of my test machines have single CPU.
Posted Date : 2007-09-27 23:18:13.0

I was able to reproduce this on a single-CPU x86 system.
10000 context switches simply take too long
for the given timeout.
Posted Date : 2007-10-01 22:13:57.0

Here's the proposed patch:

diff --git a/test/java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java b/test/java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java
--- a/test/java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java
+++ b/test/java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 6316155
+ * @bug 6316155 6595669
  * @summary Test concurrent offer vs. remove
  * @author Martin Buchholz
  */
@@ -50,15 +50,18 @@ public class OfferRemoveLoops {
     private static void testQueue(final BlockingQueue<String> q) throws Throwable {
         System.out.println(q.getClass());
         final int count = 10000;
+        final long quittingTime = System.nanoTime() + 1L * 1000L * 1000L * 1000L;
         Thread t1 = new ControlledThread() {
                 protected void realRun() {
                     for (int i = 0, j = 0; i < count; i++)
-                        while (! q.remove(String.valueOf(i)))
+                        while (! q.remove(String.valueOf(i))
+                               && System.nanoTime() - quittingTime < 0)
                             Thread.yield();}};
         Thread t2 = new ControlledThread() {
                 protected void realRun() {
                     for (int i = 0, j = 0; i < count; i++)
-                        while (! q.offer(String.valueOf(i)))
+                        while (! q.offer(String.valueOf(i))
+                               && System.nanoTime() - quittingTime < 0)
                             Thread.yield();}};
         t1.setDaemon(true); t2.setDaemon(true);
         t1.start(); t2.start();
Posted Date : 2008-03-06 23:43:21.0
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang