Code Review 6562203: Thread doesn't terminate immediately if it was stopped before start

David Holmes David.Holmes at oracle.com
Tue Feb 15 00:53:19 UTC 2011


HI Chris, Alan,

Alan Bateman said the following on 02/15/11 03:48:
> Chris Hegarty wrote:
>> Since your changes for CR 6566340 "Restore use of stillborn flag to 
>> signify a thread that was stopped before it started", are now promoted 
>> in hs21.0-b01, I would like to proceed with this clean up in the 
>> libraries. Basically reverse out the changes that were made by CR 
>> 4519200, in JDK6. Stop before start will now be correctly handled 
>> solely by the VM.
>>
>> Also, some minor changes to an existing StopBeforeStart regression test.
>>
>> http://cr.openjdk.java.net/~chegar/6562203/webrev.00/webrev/
>>
> Not your doing, but it looks like stop(null) could resume a suspended 
> thread before throwing NPE. Do I read this correctly? Just wondering if 
> that should be ex-examined while you are in the stop method.

It doesn't pay to look too closely at this code :)

Yes the old and current code might resume a thread and then not actually 
stop it due to the throwable being null. We should probably put in an 
explicit null check.

That said the resume() is bogus anyway:

1. There's nothing in the spec that says that a thread that was 
suspended which is then stopped should immediately resume so that it can 
throw the exception. Seems to me it should throw only after being 
explicitly resumed.

2. As there's no synchronization between stop/suspend/resume the thread 
could be suspended as soon as you've resumed it.


That aside the code changes look code.

Thanks. Let's hope we've finally laid this one to rest!

David



More information about the core-libs-dev mailing list