<i18n dev> testcase failure java/util/Locale/Bug6989440.java
Kumar Srinivasan
kumar.x.srinivasan at oracle.COM
Tue Oct 11 16:38:33 UTC 2011
You can file it as follows:
Product: jct_tools
Category: jct_tools
Subcategory: regtest
and for a good measure add jon to the interest list.
Kumar
> David,
>
> I'm not sure where we can file bugs on jtreg, probably have to wait
> for Jon to come back on line and drop him a mail.
>
> This is even worse that I originally though. Any thread that throws an
> unchecked exception followed by another thread starting a thread ( or
> invoking any operation on the group requiring its monitor ) will
> encounter this hang. When run in samevm or agentvm mode.
>
> Minimal treg test to reproduce this:
>
> /*
> * @test
> */
> import java.util.concurrent.Phaser;
>
> public class HangJtreg {
> static Phaser phaser = new Phaser(2);
>
> public static void main(String[] args) throws Exception {
> (new Thread(new Runnable() {
> public void run() {
> try {
> throw new RuntimeException("thrown from
> ThrowingThread");
> } finally {
> phaser.arrive();
> }
> }
> })).start();
>
> phaser.arriveAndAwaitAdvance();
> (new Thread()).start();
> }
> }
>
> -Chris.
>
> On 10/11/11 12:00 AM, David Holmes wrote:
>> So the jtreg uncaughtException code is doing a join() on the target
>> Thread while holding the monitor lock of the ThreadGroup - ouch! Where
>> do we file jtreg bugs?
>>
>> David
>>
>> On 11/10/2011 1:44 AM, Chris Hegarty wrote:
>>> On 10/10/2011 15:52, Alan Bateman wrote:
>>>> Chris Hegarty wrote:
>>>>> Naoto,
>>>>>
>>>>> Forgot to add, you can probably just push the changes for the test
>>>>> along with your source changes. I modified it a little since last
>>>>> review. Reproduces one in about every ten times on one of our Dual
>>>>> core Linux x64 boxes.
>>>> Is it the CME that duplicates for you? I'm still wondering about the
>>>> original failure mode which was a timeout, presumably a looping thread
>>>> or deadlock or something else.
>>>
>>> This duplicates CME and deadlock. The deadlock would appear to happen
>>> because jtreg tries to cleanup the thread that throws the CME, uncaught
>>> exception. Look for 0xea769858 below.
>>>
>>> "Thread-7" prio=10 tid=0x0a026c00 nid=0x3c30 in Object.wait()
>>> [0xd00fe000]
>>> java.lang.Thread.State: TIMED_WAITING (on object monitor)
>>> at java.lang.Object.wait(Native Method)
>>> - waiting on <0xea769858> (a java.lang.Thread)
>>> at java.lang.Thread.join(Thread.java:1266)
>>> - locked <0xea769858> (a java.lang.Thread)
>>> at
>>> com.sun.javatest.regtest.MainAction$SameVMThreadGroup.cleanup(MainAction.java:760)
>>>
>>>
>>>
>>> at
>>> com.sun.javatest.regtest.MainAction$SameVMThreadGroup.uncaughtException(MainAction.java:727)
>>>
>>>
>>>
>>> - locked <0xea766988> (a
>>> com.sun.javatest.regtest.MainAction$SameVMThreadGroup)
>>> at java.lang.Thread.dispatchUncaughtException(Thread.java:1964)
>>>
>>> "Thread-6" prio=10 tid=0x0a022000 nid=0x3c2f waiting for monitor entry
>>> [0xd0256000]
>>> java.lang.Thread.State: BLOCKED (on object monitor)
>>> at java.lang.ThreadGroup.threadTerminated(ThreadGroup.java:942)
>>> - waiting to lock <0xea766988> (a
>>> com.sun.javatest.regtest.MainAction$SameVMThreadGroup)
>>> at java.lang.Thread.exit(Thread.java:732)
>>>
>>> "SameVMThread" prio=10 tid=0xd058a000 nid=0x3c2e waiting for monitor
>>> entry [0xd02a6000]
>>> java.lang.Thread.State: BLOCKED (on object monitor)
>>> at java.lang.ThreadGroup.add(ThreadGroup.java:885)
>>> - waiting to lock <0xea766988> (a
>>> com.sun.javatest.regtest.MainAction$SameVMThreadGroup)
>>> at java.lang.Thread.start(Thread.java:687)
>>> - locked <0xea790160> (a Bug6989440$TestThread)
>>> at Bug6989440.main(Bug6989440.java:47)
>>> 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:601)
>>> at
>>> com.sun.javatest.regtest.MainAction$SameVMRunnable.run(MainAction.java:680)
>>>
>>>
>>> at java.lang.Thread.run(Thread.java:722)
>>> .....
>>>
>>>
>>> -Chris.
>>>
>>>>
>>>> -Alan.
More information about the core-libs-dev
mailing list