CR review request for 6880029

Tom Rodriguez Thomas.Rodriguez at Sun.COM
Wed Sep 23 16:21:52 PDT 2009


That looks much better.  Any reason not to put it above the _state =  
_synchronizing statement?  That's really the first point where a  
thread could begin to see that a safepoint is occurring and it would  
avoid any later changes to statistics collection running into the same  
initialization problem.

tom

On Sep 23, 2009, at 4:13 PM, Xiaobin Lu wrote:

> Webrev: http://cr.openjdk.java.net/~xlu/6880029/webrev.00/
>
> Details:
>
> When "PrintSafepointStatistics" is set, safepoint statistics will be  
> printed out when any safepoint reached. The current implementation  
> has a race when after "os::make_polling_page_unreacheable" is  
> called, but before "begin_statistics" is getting called. The problem  
> is that the compiler thread might call  
> SafepointSynchronize::handle_polling_page_exception during this time  
> window, and call inc_page_count to increment the page trap count.  
> The page trap count is stored in an array which hasn't been  
> malloc'ed at this point however.
>
> A fix is to move the initialization up before we call  
> os::making_polling_page_unreacheable and that is what I am doing in  
> the webrev. One thing to notice is that we have to check both  
> PrintSafepointStatistics and PrintStafepointStatisticsTimeout before  
> deferred_initilize_stat is called since both flag can be specified  
> separately. After the initialization, we can rely solely on  
> PrintSafepointStatistics.
>
> Thanks in advance!
>
> -Xiaobin
>
>



More information about the hotspot-dev mailing list