Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2176989 | 7 | Andrey Petrusenko | P3 | Closed | Fixed | b17 |
JDK-2172458 | 6u10 | Andrey Petrusenko | P3 | Resolved | Fixed | b09 |
The method can be called in various contexts, both stop-world during
refs processing or discovery, or concurrent with mutators
during ref list precleaning interleaving with concurrent discovery.
Depending upon the context, the referent hanging off of the ref
being loaded may or may not be null, and when it's not null,
may or may not have an expected mark word.
In particular, if called from CMS during concurrent precleaning
of ref lists, we need:-
assert(_referent->is_oop_or_null(UseConcMarkSweepGC), "bad referent");
rather than
assert(_referent->is_oop(), "bad referent");
as currently the case. It is possible, but probably overkill, and
perhaps with an associated performance penalty, to pass an appropriate
parameter from the calling context that is used to do the
appropriate form of weaker or stronger assertion checking.
Another sighting:-
(from ###@###.###)
One more gc/4950157.
>
> The test says it passed but VM crashed in GC with
> assert(_referent->is_oop(),"bad referent").
> VM start to crash from b12.
>
> Thanks,
> Vladimir
>
> jaberwocky%
> /net/vmsqe.sfbay/export/backup/UNIFIED-DTF/harness/jct-tools3.2.2_02/solaris/bin/jtreg
> -verbose:all -testjdk:$JAVA_HOME/fastdebug gc/4950157
> --------------------------------------------------
> TEST: gc/4950157/BubbleUpRef.java
> JDK under test: (/tmp/kvn/6563987/jdk7_b13/fastdebug)
> java version "1.7.0-ea-fastdebug"
> Java(TM) SE Runtime Environment (build 1.7.0-ea-fastdebug-b13)
> Java HotSpot(TM) Tiered VM (build 1.7.0-ea-fastdebug-b13-fastdebug,
> mixed mode)
>
> ACTION: compile -- Passed. Compilation successful
> REASON: User specified action: run compile BubbleUpRef.java
> TIME: 10.063 seconds
> messages:
> command: compile /tmp/kvn/6563987/tests/gc/4950157/BubbleUpRef.java
> reason: User specified action: run compile BubbleUpRef.java
> elapsed time (seconds): 10.063
> STDOUT:
> STDERR:
> Note: /tmp/kvn/6563987/tests/gc/4950157/BubbleUpRef.java uses
> unchecked or unsafe operations.
> Note: Recompile with -Xlint:unchecked for details.
>
> ACTION: shell -- Passed. Execution successful
> REASON: User specified action: run shell Test4950157.sh
> TIME: 3.892 seconds
> messages:
> command: shell Test4950157.sh []
> reason: User specified action: run shell Test4950157.sh
> elapsed time (seconds): 3.892
> STDOUT:
> # /tmp/kvn/6563987/tests/JTwork/scratch/hs_err_pid18630.log
> #
> # If you would like to submit a bug report, please visit:
> # http://java.sun.com/webapps/bugreport/crash.jsp
> #
> VM option '-CMSYield'
> VM option '+UseConcMarkSweepGC'
> VM option 'CMSInitiatingOccupancyFraction=0'
> Current thread is 6
> Dumping core ...
> STDERR:
> java full version "1.7.0-ea-fastdebug-b13"
> Abort
>
> TEST RESULT: Passed. Execution successful
> --------------------------------------------------
> Test results: passed: 1
> Report written to JTreport/report.html
> Results written to /tmp/kvn/6563987/tests/JTwork
>
>
> jaberwocky% head /tmp/kvn/6563987/tests/JTwork/scratch/hs_err_pid18630.log
> #
> # An unexpected error has been detected by Java Runtime Environment:
> #
> # Internal Error
> (/BUILD_AREA/jdk7.0/hotspot/src/share/vm/memory/referenceProcessor.cpp:488),
> pid=18630, tid=6
> # Error: assert(_referent->is_oop(),"bad referent")
> #
> # Java VM: Java HotSpot(TM) Tiered VM
> (1.7.0-ea-fastdebug-b13-fastdebug mixed mode solaris-sparc)
> # If you would like to submit a bug report, please visit:
> # http://java.sun.com/webapps/bugreport/crash.jsp
> #
>
>
>
>
refs processing or discovery, or concurrent with mutators
during ref list precleaning interleaving with concurrent discovery.
Depending upon the context, the referent hanging off of the ref
being loaded may or may not be null, and when it's not null,
may or may not have an expected mark word.
In particular, if called from CMS during concurrent precleaning
of ref lists, we need:-
assert(_referent->is_oop_or_null(UseConcMarkSweepGC), "bad referent");
rather than
assert(_referent->is_oop(), "bad referent");
as currently the case. It is possible, but probably overkill, and
perhaps with an associated performance penalty, to pass an appropriate
parameter from the calling context that is used to do the
appropriate form of weaker or stronger assertion checking.
Another sighting:-
(from ###@###.###)
One more gc/4950157.
>
> The test says it passed but VM crashed in GC with
> assert(_referent->is_oop(),"bad referent").
> VM start to crash from b12.
>
> Thanks,
> Vladimir
>
> jaberwocky%
> /net/vmsqe.sfbay/export/backup/UNIFIED-DTF/harness/jct-tools3.2.2_02/solaris/bin/jtreg
> -verbose:all -testjdk:$JAVA_HOME/fastdebug gc/4950157
> --------------------------------------------------
> TEST: gc/4950157/BubbleUpRef.java
> JDK under test: (/tmp/kvn/6563987/jdk7_b13/fastdebug)
> java version "1.7.0-ea-fastdebug"
> Java(TM) SE Runtime Environment (build 1.7.0-ea-fastdebug-b13)
> Java HotSpot(TM) Tiered VM (build 1.7.0-ea-fastdebug-b13-fastdebug,
> mixed mode)
>
> ACTION: compile -- Passed. Compilation successful
> REASON: User specified action: run compile BubbleUpRef.java
> TIME: 10.063 seconds
> messages:
> command: compile /tmp/kvn/6563987/tests/gc/4950157/BubbleUpRef.java
> reason: User specified action: run compile BubbleUpRef.java
> elapsed time (seconds): 10.063
> STDOUT:
> STDERR:
> Note: /tmp/kvn/6563987/tests/gc/4950157/BubbleUpRef.java uses
> unchecked or unsafe operations.
> Note: Recompile with -Xlint:unchecked for details.
>
> ACTION: shell -- Passed. Execution successful
> REASON: User specified action: run shell Test4950157.sh
> TIME: 3.892 seconds
> messages:
> command: shell Test4950157.sh []
> reason: User specified action: run shell Test4950157.sh
> elapsed time (seconds): 3.892
> STDOUT:
> # /tmp/kvn/6563987/tests/JTwork/scratch/hs_err_pid18630.log
> #
> # If you would like to submit a bug report, please visit:
> # http://java.sun.com/webapps/bugreport/crash.jsp
> #
> VM option '-CMSYield'
> VM option '+UseConcMarkSweepGC'
> VM option 'CMSInitiatingOccupancyFraction=0'
> Current thread is 6
> Dumping core ...
> STDERR:
> java full version "1.7.0-ea-fastdebug-b13"
> Abort
>
> TEST RESULT: Passed. Execution successful
> --------------------------------------------------
> Test results: passed: 1
> Report written to JTreport/report.html
> Results written to /tmp/kvn/6563987/tests/JTwork
>
>
> jaberwocky% head /tmp/kvn/6563987/tests/JTwork/scratch/hs_err_pid18630.log
> #
> # An unexpected error has been detected by Java Runtime Environment:
> #
> # Internal Error
> (/BUILD_AREA/jdk7.0/hotspot/src/share/vm/memory/referenceProcessor.cpp:488),
> pid=18630, tid=6
> # Error: assert(_referent->is_oop(),"bad referent")
> #
> # Java VM: Java HotSpot(TM) Tiered VM
> (1.7.0-ea-fastdebug-b13-fastdebug mixed mode solaris-sparc)
> # If you would like to submit a bug report, please visit:
> # http://java.sun.com/webapps/bugreport/crash.jsp
> #
>
>
>
>
- backported by
-
JDK-2172458 Assert in DisoveredListIterator::load_ptrs() too strong in certain execution contexts
- Resolved
-
JDK-2176989 Assert in DisoveredListIterator::load_ptrs() too strong in certain execution contexts
- Closed
- relates to
-
JDK-6417901 Generalize parallel reference processing to all collectors.
- Resolved