JDK-6624765 : Guarantee failure "Unexpected dirty card found"
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 7
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2007-11-01
  • Updated: 2010-04-02
  • Resolved: 2009-02-03
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
hs12Resolved
Related Reports
Duplicate :  
Description
This failure occurs while doing runThese testing.

Internal Error at cardTableRS.cpp:565, pid=3267, tid=7
Error: guarantee(*cur_entry == CardTableModRefBS::clean_card,"Unexpected dirty card found")

This is in 

java version "1.7.0-ea"
Java(TM) SE Runtime Environment (build 1.7.0-ea-b23)
Java HotSpot(TM) Server VM (build 12.0-b01, mixed mode)

This is reproducible with the current gc_baseline.

Comments
SUGGESTED FIX JPRT Job ID: 2008-02-15-150239.jmasa.hg_gc_baseline_6624765 JPRT System Used: sfbay JPRT Version Used: Feb 15 2008 - Case of the Bartered Bikini [50c84a85177a] Job URL: http://javaweb.sfbay/jdk/jprt/archive/2008/02/2008-02-15-150239.jmasa.hg_gc_baseline_6624765 Job ARCHIVE: /net/prt-archiver.sfbay/data/jprt/archive/2008/02/2008-02-15-150239.jmasa.hg_gc_baseline_6624765 User: jmasa Email: ###@###.### Release: jdk7 Job Source: Mercurial: /net/jano2/export2/hotspot/users/jmasa/hg_gc_baseline_6624765/{.} Parent: /net/jano2.sfbay/export2/hotspot/hg/hotspot-gc Push Parent: /net/jano2.sfbay/export2/hotspot/hg/hotspot-gc File List: {.} Command Line: jprt rerun 2008-02-15-150239.jmasa.hg_gc_baseline_6624765 Job submitted at: Friday February 15, 2008 22:14:51 PST Total time in queue: 1h 34m 52s Job started at: Friday February 15, 2008 22:51:23 PST Job integrated at: Friday February 15, 2008 23:49:25 PST Job finished at: Friday February 15, 2008 23:49:43 PST Job run time: 58m 20s Job state: success Job flags: SYNC INTEGRATE PRECIOUS Bundles: USE: jprt install 2008-02-15-150239.jmasa.hg_gc_baseline_6624765 HINT: Use 'jprt rerun -comment <arg> -retest 2008-02-15-150239.jmasa.hg_gc_baseline_6624765' to rerun the tests for this job (you can also add tests with 'jprt rerun'). NOTE: Zip files containing exe or dll files on windows have had problems with execute permissions. You may need to 'chmod a+x' the windows exe and dll files. Rerun Comments: Rerun: Original submit command: jprt rerun 2008-02-15-150239.jmasa.hg_gc_baseline_6624765 User Comments: Fixed 6624765: Guarantee failure "Unexpected dirty card found" 1) The first card covering the unused part of the generation could also cover a used part of the generation. This was fixed by not checking that first card if the start of the region being checked was not card aligned. 2) When the card table was expanded, the newly added cards are clean. The cleaning was not complete. A card table expansion is done for a newly committed region of the heap (call it X). The card table expansion C is done so that it is expanded in increments of pages. C may include more cards than strictly need to cover X (due to the rounding up of C for page alignment). Only the cards covering X were being cleaned. This was fixed by cleaning all the cards in C. Also fixing a problem with the parnew promotion fail alot code. The counters which dictate frequency of "alot" were not being reset for parnew.
13-03-2008

EVALUATION Note that this bug does not affect the correctness of garbage collection. Rather it is an inhibitor to the use of GC verification when the ParNew collector is being used.
22-01-2008

EVALUATION There were two causes for the bug. 1) The first card covering the unused part of the generation could also cover a used part of the generation. This was fixed by not checking that first card if the start of the region being checked was not card aligned. 2) When the card table was expanded, the newly added cards are clean. The cleaning was not complete. A card table expansion is done for a newly committed region of the heap (call it X). The card table expansion C is done so that it is expanded in increments of pages. C may include more cards than strictly need to cover X (due to the rounding up of C for page alignment). Only the cards covering X were being cleaned. This was fixed by cleaning all the cards in C.
05-12-2007