RFR (S) 6909265: assert(_OnDeck != Self->_MutexEvent, "invariant") with -XX:+PrintMallocFree

harold seigel harold.seigel at oracle.com
Fri Feb 2 14:00:47 UTC 2018


Hi Coleen,

This change looks good.

Thanks, Harold


On 2/2/2018 8:35 AM, coleen.phillimore at oracle.com wrote:
>
>
> On 2/2/18 8:32 AM, David Holmes wrote:
>> On 2/02/2018 11:26 PM, coleen.phillimore at oracle.com wrote:
>>> On 2/2/18 12:08 AM, David Holmes wrote:
>>>> Hi Coleen,
>>>>
>>>> On 2/02/2018 2:24 PM, coleen.phillimore at oracle.com wrote:
>>>>>
>>>>> Okay, here is PrintMallocFree and PrintMalloc removed. tier1,2 
>>>>> testing is in progress.
>>>>
>>>> So the difference now is that even more of the logging has been 
>>>> removed, leaving only a couple of special cases?
>>>
>>> Right.
>>>>
>>>>>
>>>>> I changed two things in addition to removing this tracing.
>>>>>
>>>>> 1. Arena::operator new(nothrow) calls AllocateHeap to be 
>>>>> consistent with it's throw alternative.  I suspect it called 
>>>>> os::malloc() from before AllocateHeap had the flag 
>>>>> AllocFailStrategy::RETURN_NULL.
>>>>
>>>> Okay. Took me a little while to follow it through. :)
>>>>
>>>>> 2.  I have log tags malloc/free as tags to log_warning when we get 
>>>>> a memory stomping error and tracing MallocCatchPtr which is better 
>>>>> than tty->print alternative in our UL world.
>>>>
>>>> It seems odd to me to have log tags "malloc" and "free" but not 
>>>> have them actually log mallocs or frees! Shouldn't these just be 
>>>> unconditional warnings? Afterall if I get a memory stomp I'd like 
>>>> to know about it now - not sure what would prompt me to enable 
>>>> special logging just to see that. ??
>>>
>>> You get log_warning by default.
>>
>> Ah! I forgot about that. Okay. Ignore me.
>
> Thanks, David.  Thanks for your comments and review on this really old 
> bug!
>
> Coleen
>
>>
>> Thanks,
>> David
>>
>>> I think it's an improvement and we'd like to convert all tty->print 
>>> to logging, and this seems a perfect case.  It reports fatal() at 
>>> the end.
>>>
>>> thanks,
>>> Coleen
>>>
>>>>
>>>> Thanks,
>>>> David
>>>>
>>>>> open webrev at http://cr.openjdk.java.net/~coleenp/6909265.02/webrev
>>>>> bug link https://bugs.openjdk.java.net/browse/JDK-6909265
>>>>
>>>>
>>>>> Thanks,
>>>>> Coleen
>>>>>
>>>>>
>>>>> On 2/1/18 6:04 PM, David Holmes wrote:
>>>>>> Hi Coleen,
>>>>>>
>>>>>> I have no experience using PrintMallocFree. Unless someone wants 
>>>>>> to champion its existance then I'd suggest just getting rid of 
>>>>>> it. We have/had a few flags that were presumably useful while 
>>>>>> debugging/devoloping something and which are left in "just in 
>>>>>> case" but then never get used.
>>>>>>
>>>>>> Thanks,
>>>>>> David
>>>>>>
>>>>>> On 1/02/2018 11:37 PM, coleen.phillimore at oracle.com wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 1/31/18 10:36 PM, David Holmes wrote:
>>>>>>>> Hi Coleen,
>>>>>>>>
>>>>>>>> On 1/02/2018 1:01 PM, coleen.phillimore at oracle.com wrote:
>>>>>>>>> Summary: Convert to logging without thread locking
>>>>>>>>>
>>>>>>>>> There are two options (-XX:+PrintMallocFree and 
>>>>>>>>> -XX:+PrintMalloc) to print the calls and memory returned in 
>>>>>>>>> malloc and free calls in the vm. I converted the first one to 
>>>>>>>>> Unified Logging which doesn't crash getting the tty lock in 
>>>>>>>>> the Thread destructor and removed the latter.  I don't see the 
>>>>>>>>> usefulness of this logging honestly, so if the opinion is to 
>>>>>>>>> remove this logging, I'd be happy to do so. NMT seems much 
>>>>>>>>> more useful.
>>>>>>>>
>>>>>>>> I'm not sure about this one. Arguably some interesting 
>>>>>>>> malloc/frees occur before log configuration.
>>>>>>>
>>>>>>> They also occurred before tty initialization and afterward too.
>>>>>>>>
>>>>>>>> That aside, given you always seem to do:
>>>>>>>>
>>>>>>>> log_is_enabled(Trace, malloc, free)
>>>>>>>>
>>>>>>>> which requires
>>>>>>>>
>>>>>>>> -Xlog:malloc+free=trace
>>>>>>>>
>>>>>>>> would it make more sense to define a single tag eg mallocfree 
>>>>>>>> or nativemem or ???
>>>>>>>>
>>>>>>>
>>>>>>> It's an opinion question.  I picked this to match the option and 
>>>>>>> assume one would want to see both mallocs and frees.  I like the 
>>>>>>> composition of small tags that have meaning.  Then again, I 
>>>>>>> could change it if you have an opinion about this.
>>>>>>>> Or, as you say, just drop this altogether. Is it useful for 
>>>>>>>> when debugging NMT?
>>>>>>>>
>>>>>>>
>>>>>>> I doubt it's useful for debugging NMT.  It might have been 
>>>>>>> useful once but I don't know why.  What's your opinion?
>>>>>>>
>>>>>>> thanks,
>>>>>>> Coleen
>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> David
>>>>>>>>
>>>>>>>>> Tested with NMT and tier1 tests, and wrote test.
>>>>>>>>>
>>>>>>>>> open webrev at 
>>>>>>>>> http://cr.openjdk.java.net/~coleenp/6909265.01/webrev
>>>>>>>>> bug link https://bugs.openjdk.java.net/browse/JDK-6909265
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Coleen
>>>>>>>
>>>>>
>>>
>



More information about the hotspot-runtime-dev mailing list