-
Bug
-
Resolution: Fixed
-
P4
-
5.0
-
b42
-
generic
-
generic
The TraceExceptions code in the VM uses the ThreadCritical lock to serialize its
output (presumably for historical reasons). Now that there exists a mechanism
for locking the tty (ttyLocker), there is a potential deadlock that happens
fairly quickly when TraceExceptions, TraceDeoptimization and DeoptimizeALot /
DeoptimizeRandom are all specified. The deadlock is between the various
TraceExceptions code that uses ThreadCritical and the TraceDeoptimization code
in Deoptimization::create_vframeArray which seizes the ttyLocker very high up
and performs allocation internally. The solution is to use ttyLocker in place
of ThreadCritical in the TraceExceptions code.
output (presumably for historical reasons). Now that there exists a mechanism
for locking the tty (ttyLocker), there is a potential deadlock that happens
fairly quickly when TraceExceptions, TraceDeoptimization and DeoptimizeALot /
DeoptimizeRandom are all specified. The deadlock is between the various
TraceExceptions code that uses ThreadCritical and the TraceDeoptimization code
in Deoptimization::create_vframeArray which seizes the ttyLocker very high up
and performs allocation internally. The solution is to use ttyLocker in place
of ThreadCritical in the TraceExceptions code.