mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-17 17:44:40 +02:00
8215355: Object monitor deadlock with no threads holding the monitor (using jemalloc 5.1)
Reviewed-by: rehn, stuefe, dcubed, sspitsyn
This commit is contained in:
parent
776522a355
commit
ec51784c0d
3 changed files with 4 additions and 4 deletions
|
@ -1007,7 +1007,7 @@ bool Thread::is_in_stack(address adr) const {
|
||||||
address end = os::current_stack_pointer();
|
address end = os::current_stack_pointer();
|
||||||
// Allow non Java threads to call this without stack_base
|
// Allow non Java threads to call this without stack_base
|
||||||
if (_stack_base == NULL) return true;
|
if (_stack_base == NULL) return true;
|
||||||
if (stack_base() >= adr && adr >= end) return true;
|
if (stack_base() > adr && adr >= end) return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -729,7 +729,7 @@ protected:
|
||||||
|
|
||||||
bool on_local_stack(address adr) const {
|
bool on_local_stack(address adr) const {
|
||||||
// QQQ this has knowledge of direction, ought to be a stack method
|
// QQQ this has knowledge of direction, ought to be a stack method
|
||||||
return (_stack_base >= adr && adr >= stack_end());
|
return (_stack_base > adr && adr >= stack_end());
|
||||||
}
|
}
|
||||||
|
|
||||||
int lgrp_id() const { return _lgrp_id; }
|
int lgrp_id() const { return _lgrp_id; }
|
||||||
|
|
|
@ -384,14 +384,14 @@ public class JavaThread extends Thread {
|
||||||
Address stackBase = getStackBase();
|
Address stackBase = getStackBase();
|
||||||
// Be robust
|
// Be robust
|
||||||
if (sp == null) return false;
|
if (sp == null) return false;
|
||||||
return stackBase.greaterThanOrEqual(a) && sp.lessThanOrEqual(a);
|
return stackBase.greaterThan(a) && sp.lessThanOrEqual(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isLockOwned(Address a) {
|
public boolean isLockOwned(Address a) {
|
||||||
Address stackBase = getStackBase();
|
Address stackBase = getStackBase();
|
||||||
Address stackLimit = stackBase.addOffsetTo(-getStackSize());
|
Address stackLimit = stackBase.addOffsetTo(-getStackSize());
|
||||||
|
|
||||||
return stackBase.greaterThanOrEqual(a) && stackLimit.lessThanOrEqual(a);
|
return stackBase.greaterThan(a) && stackLimit.lessThanOrEqual(a);
|
||||||
|
|
||||||
// FIXME: should traverse MonitorArray/MonitorChunks as in VM
|
// FIXME: should traverse MonitorArray/MonitorChunks as in VM
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue