<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<br>
<div class="moz-cite-prefix">On 11/23/13 2:58 PM, Srinivas
Ramakrishna wrote:<br>
</div>
<blockquote
cite="mid:CABzyjynYAQHDsybSeJSUb7ag+CX0LWH=4gKOxYLCrjaDqJmD1g@mail.gmail.com"
type="cite">
<div dir="ltr"><br>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Fri, Nov 22, 2013 at 11:01 PM, Jon
Masamitsu <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:jon.masamitsu@oracle.com" target="_blank">jon.masamitsu@oracle.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">I'm
withdrawing this review request until further notice.</blockquote>
<div><br>
<br>
</div>
<div>Jon, I know you withdrew to give this further thought,
but IIRC, the thing to do here might be<br>
to record the return as a split birth, rather than to fix
up the split death.<br>
</div>
<div>At least that was my mental model for the demand
tracking.<br>
</div>
</div>
</div>
</div>
</blockquote>
Missed this somehow in my mail box.<br>
<br>
I agree it would be nice to keep the census update near the<br>
code that removed the chunk from the dictionary but I was<br>
confused about what to do.<br>
<br>
I wanted to undo a split-death so adding a coal-birth seemed<br>
like the thing to do but at the point at which the chunk is<br>
being added back, putting in a coal-birth looked wrong <br>
because there really wasn't any coalescing being done. I could<br>
see myself coming back to that code next week and <br>
wondering why the heck I was adding a coal-birth. And<br>
when I thought about it, the split-death wasn't right either<br>
since I didn't really know what went on in get_chunk() for<br>
an "atLeast" policy. In the end I decided two wrongs<br>
don't make a right :-), so did the census update when<br>
I new what was actually being done. It seemed simpler<br>
to me.<br>
<br>
If I was going to fix it, I would add a method <br>
get_chunk_and_update_census() that would <br>
know how to correctly update the census.<br>
<br>
Jon<br>
<br>
<blockquote
cite="mid:CABzyjynYAQHDsybSeJSUb7ag+CX0LWH=4gKOxYLCrjaDqJmD1g@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div><br>
</div>
<div>Will look at yr changes when you provide a new webrev.
At this time I only read yr descripition below, but<br>
did not look at the webrev.<br>
<br>
</div>
<div>thanks!<br>
</div>
<div>-- ramki<br>
<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb">
<div class="h5">
<br>
<br>
On 11/22/2013 5:54 PM, Jon Masamitsu wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
8026303: CMS: JVM intermittently crashes with
"FreeList of size 258 violates Con<br>
servation Principle" assert<br>
<br>
CompactibleFreeListSpace:: par_get_chunk_of_blocks()
replenishes<br>
the free list of a given size by splitting a larger
chunk. The code<br>
searched for a block that was large enough to split.
If a large enough<br>
chunk was found it was removed from the dictionary
and a split death<br>
was recorded. If the remainder after splitting would
be too small, that<br>
block was returned to the dictionary but forgot to
fix the split death<br>
accounting<br>
<br>
The fix was to move the split death accounting to
the point where<br>
it was known that the chunk would not be put back
into the dictionary.<br>
There was also code moved which did the accounting
for the<br>
_unallocated_block (updated it to account for the
allocation which<br>
could change _unallocated_block).<br>
<br>
The fix<br>
<br>
<a moz-do-not-send="true"
href="http://cr.openjdk.java.net/%7Ejmasa/8026303/webrev.00/"
target="_blank">http://cr.openjdk.java.net/~jmasa/8026303/webrev.00/</a><br>
<br>
A small amount of code refactoring was done and is
in<br>
a second webrev (along with the fix above). Both
changes<br>
will be put back together.<br>
<br>
<a moz-do-not-send="true"
href="http://cr.openjdk.java.net/%7Ejmasa/8026303/webrev_cleanup.00/"
target="_blank">http://cr.openjdk.java.net/~jmasa/8026303/webrev_cleanup.00/</a><br>
<br>
Thanks.<br>
<br>
Jon<br>
<br>
<br>
<br>
</blockquote>
<br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
<br>
</body>
</html>