-
Enhancement
-
Resolution: Unresolved
-
P2
-
8u341, 11, 17, 21, 22
Similar to JDK-8318889, we should evaluate if we have other fatal asserts in C2 that detect situations we can't recover from, i.e. that (could) lead to a crash in product, and that we (often) hit in the past. If their detection is feasible and not too expensive in release builds, we should add compilation bailouts.
Examples:
- loopnode.cpp:155: assert(false) failed: Bad graph detected in get_early_ctrl_for_expensiveJDK-8229994
- loopnode.hpp:1140: assert(n != nullptr) failed: Bad immediate dominator infoJDK-8314024, JDK-8319372
- matcher.cpp:1591: assert(false) failed: bad AD fileJDK-8289043 (I think we've never seen this with crashes in product but it seems to be cheap enough to bail out anyway)
- loopnode.cpp:5665: assert(!had_error) failed: bad dominance or "Bad graph detected in compute_lca_of_uses"JDK-8318690 (This seems very expensive though but lead to crashes in the past, see JDK-8078262)
- gcm.cpp:276: assert(false) failed: unscheduable graphJDK-8283466 (might be too expensive but we've seen crashes in the past JDK-8218961)
- loopopts.cpp:1598: assert(!n->is_Store() && !n->is_LoadStore()) failed: no node with a side effectJDK-8286625
Probably harmless but we should verify:
- gcm.cpp:830: assert(store->find_edge(load) != -1) failed: missing precedence edgeJDK-8265132
- chaitin.cpp:1661: "No dead instructions after post-alloc" and postaloc.cpp:140: "unexpected yanked node"JDK-8210389
Feel free to add to this list.
Examples:
- loopnode.cpp:155: assert(false) failed: Bad graph detected in get_early_ctrl_for_expensive
- loopnode.hpp:1140: assert(n != nullptr) failed: Bad immediate dominator info
- matcher.cpp:1591: assert(false) failed: bad AD file
- loopnode.cpp:5665: assert(!had_error) failed: bad dominance or "Bad graph detected in compute_lca_of_uses"
- gcm.cpp:276: assert(false) failed: unscheduable graph
- loopopts.cpp:1598: assert(!n->is_Store() && !n->is_LoadStore()) failed: no node with a side effect
Probably harmless but we should verify:
- gcm.cpp:830: assert(store->find_edge(load) != -1) failed: missing precedence edge
- chaitin.cpp:1661: "No dead instructions after post-alloc" and postaloc.cpp:140: "unexpected yanked node"
Feel free to add to this list.
- relates to
-
JDK-8318445 More broken bailout chains in C2
-
- Resolved
-
-
JDK-8318889 C2: add bailout after assert Bad graph detected in build_loop_late
-
- Closed
-
-
JDK-8330157 C2: Add a stress flag for bailouts
-
- Resolved
-
1.
|
C2: Add bailouts next to a few asserts |
|
Resolved | Daniel Skantz |