[11] RFR(XS) 8202152: test/hotspot/jtreg/runtime/whitebox/WBStackSize.java fails
dean.long at oracle.com
dean.long at oracle.com
Wed Apr 25 03:34:11 UTC 2018
OK. I guess another fix would be to have the test ignore
actualStackSize > configStackSize.
dl
On 4/24/18 2:30 PM, Vladimir Kozlov wrote:
> I don't think pthreads from other tests/apps will have affect.
> Stack sizes are set during startup regardless what will be run after
> that (one or several tests).
>
> We have only 3 (I think) stack size: VM (vm, gc, watcher - native
> threads), compiler, Java threads.
>
> The only concern that GC also now has dynamic threads creation. But I
> am not sure they release those threads.
>
> Note, in general it is not a problem to reuse bigger stacks.
> The test is too strict assuming a new stack will always be created.
> That is a problem and it addressed by the fix.
>
> Thanks,
> Vladimir
>
> On 4/24/18 1:20 PM, dean.long at oracle.com wrote:
>> It seems like this could still break if the pthreads implementation
>> decides to hand out (non-recycled) threads with oversized stacks, or
>> if there are recycled threads that don't use the values from the
>> command-line. What happens if we run lots of tests in samevm mode,
>> and those tests uses different values for the stack size? Then
>> wouldn't pthreads have a cache of various stack sizes to recycle new
>> threads from?
>>
>> dl
>>
>> On 4/23/18 11:12 PM, David Holmes wrote:
>>> On 24/04/2018 3:54 PM, David Holmes wrote:
>>>> To follow up ... Vladimir and I have had an interesting back and
>>>> forth in the bug report. It seems that at least in some cases
>>>> terminated threads are getting recycled - not just their pthread_t
>>>> identities but the actual allocated stack region as well. We seem
>>>> to end up with a new regular Java thread acquiring the id and stack
>>>> of a just terminated compiler thread - hence the regular Java
>>>> thread gets the wrong size stack!
>>>>
>>>> This is quite bizarre and seems quite broken.
>>>
>>> No it's not broken. The stacksize attribute is just a minimum size,
>>> so the OS can reuse a terminated thread with a larger stack - and
>>> that's what we are seeing.
>>>
>>> So the fix is fine, I would just add before @run:
>>>
>>> @comment Must use the same stacksize for Java threads and compiler
>>> threads in case of thread recycling
>>>
>>> Or something to that affect.
>>>
>>> Thanks,
>>> David
>>>
>>>> David
>>>>
>>>> On 24/04/2018 7:24 AM, David Holmes wrote:
>>>>> Hi Vladimir,
>>>>>
>>>>> On 24/04/2018 5:20 AM, Vladimir Kozlov wrote:
>>>>>> http://cr.openjdk.java.net/~kvn/8202152/webrev.00/
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8202152
>>>>>>
>>>>>> After 8198756 changes compiler threads could be released and
>>>>>> other Java threads can re-use the same HW threads for which stack
>>>>>> size was determined during start. The test WBStackSize.java may
>>>>>> fail in such cases because Java thread stack size is set and
>>>>>> checked in test.
>>>>>
>>>>> That does not make sense to me. We don't "re-use HW threads" - I'm
>>>>> not even sure what that means. Compiler threads have a different
>>>>> stacksize to other Java threads - that seems simple enough.
>>>>>
>>>>>> For 8198756 changes we added thread name check to workaround the
>>>>>> problem [1]. But it seems is not enough.
>>>>>
>>>>> Why would this test be run in a compiler thread ????
>>>>>
>>>>>> To avoid this issue I added -XX:CompilerThreadStackSize=512 flag
>>>>>> to match Java thread stack size (note, size is in Kb for this flag).
>>>>>
>>>>> That seems like a workaround of the real problem.
>>>>>
>>>>> David
>>>>> -----
>>>>>
>>>>>> I also reverted changes in test code and instead added thread
>>>>>> name print to know in case we still have problem in a future.
>>>>>>
>>>>>> Tier1 testing (which run the test) passed.
>>>>>>
>>
More information about the hotspot-dev
mailing list