logging fixes for last pre-ZBB JDK7-TL snapshot (6977677, 7016208, 7041595)

Daniel D. Daugherty daniel.daugherty at oracle.com
Mon May 16 12:33:35 PDT 2011


On 5/16/2011 1:22 PM, Mandy Chung wrote:
>  Dan,
>
> Great that you knocked down another hard-to-reproduce bug and your 
> simple regression test.  The comments you add are really helpful.

Thanks!


>
> Logger.java
>    Looks good.   The removal of the synchronization required by 
> Logger.getLogger
>    fixes the deadlock issue.

Thanks! I've done a crawl through Logger.java and LogManager.java
and closely examined all uses of "synchronized". I'll be filing a
new bug to track those notes and the resolution of those potential
issues. Of course, that'll be a JDK8 thing...


> LogManager.java
>     Retrying in a while loop is one way to fix weak ref / gc timing 
> issue.

Tom is the one that suggested the loop. I just happened
to write it a bit differently than he would have, but
for today's snapshot I think this is good.


>     What about if you refactor the addLogger method to add a new private
>     private method equivalent to addLogger (say add(Logger)) that will 
> return
>     logger if added successfully or null if not.

This should also do the trick, but I think I would prefer to
go with what I have since it's tested and reviewed by several
folks (most of the comments have been off-list).


>     The addLogger method will return add(logger) != logger.  The 
> synchronization
>     will be done in the new add method.
>
>     Would this fix 7016208?    It seems to me that addLogger returning 
> boolean
>     is the cause for this bug.

Yes it probably would fix 7016208, but I would prefer to go
with what I have. Yes, addLogger() returning a boolean was
a bad design choice way back when.

We'll have to look at tweaking the Logging API in JDK8.

Are you okay if I go with what I have (modulo a few editorial
changes)?

Dan




>
> Mandy
>
> On 05/15/11 11:40, Daniel D. Daugherty wrote:
>> Greetings,
>>
>> The final pre-ZBB JDK7-TL snapshot is happening @ 1700 PT on
>> Monday, May 14, 2011. This snapshot is targeted for JDK7-B143
>> or JDK7-B144 (I'm not sure which). Yes, we're still trying to
>> figure out how to merge our JDK & HotSpot Express processes
>> with Oracle processes. Please be patient while we iron out the
>> wrinkles...
>>
>> I have three bug fixes for the java.util.logging area:
>>
>>    6977677 3/2 Deadlock on logging subsystem initialization
>>    7016208 4/3 null sometimes returned by java.util.logging.Logger.
>>                getLogger(String name) in -server -Xcomp
>>    7041595 4/4 add lost test for 6487638
>>
>> 6977677 is a deadlock between java.util.logging.Logger.getLogger()
>> and LogManager.<clinit> via a PlatformLogger. This fix involves:
>>
>>    src/share/classes/java/util/logging/Logger.java
>>    test/java/util/logging/LoggingDeadlock4.java
>>
>> Mandy, I would like your review of the above bug fix.
>>
>> 7016208 is an unexpected null return from Logger.getLogger() due to
>> the lack of a strong reference. This fix involves:
>>
>>    src/share/classes/java/util/logging/LogManager.java
>>
>> Tom R., I would like your review of the above bug fix.
>>
>> 7041595 is just pushing a Logging deadlock test that got lost a
>> long time ago. This fix involves:
>>
>>    test/java/util/logging/LoggingDeadlock3.java
>>    test/java/util/logging/LoggingDeadlock3.props
>>
>> Because I'm fixing a deadlock in 6977677, I wanted to make sure
>> that this Logging deadlock test was back in the mix.
>>
>> Here is the webrev URL:
>>
>>    http://cr.openjdk.java.net/~dcubed/logging-batch-20110515-webrev/0/
>>
>> The comments that I added to the code changes should make the
>> reason(s) for the code changes pretty self explanatory.
>>
>> These changes have been run through JPRT and pass the "jdk_util"
>> tests on all platforms. I have also run SDK/JDK logging tests
>> and the VM/NSK logging tests on the following configs:
>>
>>    Solaris X86 * {Client VM, Server VM} product * {-Xmixed, -Xcomp}
>>    WinXP * {Client VM, Server VM} product * {-Xmixed, -Xcomp}
>>
>> Here is the summary from Solaris X86:
>>
>> Summary of Test Results (8 result dirs)
>> =========================================
>>    all executed: 2264  all passed: 2264  all ignored: 0  all failed: 0
>>    time: 0 hour(s) 17 minute(s)
>>
>> Here is the partial summary (6 of 8) from WinXP:
>>
>> Summary of Test Results (6 result dirs)
>> =========================================
>>    all executed: 1160  all passed: 1160  all ignored: 0  all failed: 0
>>    time: 1 hour(s) 0 minute(s)
>>
>> The last two VM/NSK test runs are still going; yes, WinXP is slower than
>> Solaris X86...
>>
>> Thanks, in advance, for any reviews.
>>
>> Dan
>>
>


More information about the hotspot-runtime-dev mailing list