I think this looks good. Thanks for doing this. /Staffan
On 30 apr 2013, at 19:02, Kevin Walls <[email protected]> wrote: > Hi, > > I'd like some review of this suggestion to fix: > 6313816 SA windows unaligned address exception > > webrev: > http://cr.openjdk.java.net/~kevinw/6313816/webrev/ > > This bug is a long-standing annoyance, mainly shown by using jstack -m > > Already fixed on Linux with additional sanity checks on ebp/rbp values in > e.g. LinuxX86CFrame.sender() > > On Windows there isn't such a convenient place to put these checks, as they > call getAddressValue() which is only part of the specific debugger interfaces > such as LinuxDebugger, WindbgDebugger, etc.. and on Windows we use > X86CFrame and AMD64CFrame. These are constructed with only a > CDebugger, there is no "WinXXXFrame" class - perhaps there should be! > > That's what I've tried here, by renaming e.g. X86CFrame to WinX86CFrame, > and adding the extra sanity checks as we already have in LinuxX86CFrame. > > As files have move thed diff isn't obvious, but in common with some previous > changes > the new bits are x86 and x64 versions of these: > > + // Check alignment of rbp > + if ( dbg.getAddressValue(rbp) % ADDRESS_SIZE != 0) { > + return null; > + } > + > > and > > - if (nextRBP == null) { > + if (nextRBP == null || nextRBP.lessThanOrEqual(rbp)) { > > > This additional symmetry between the platforms seems to make sense, and > should help any future changes. > > Thanks > Kevin >
