On 10/11/07, Tim Ellison <[EMAIL PROTECTED]> wrote: > > > > Andrew Zhang wrote: > > On 10/11/07, Gregory Shimansky <[EMAIL PROTECTED]> wrote: > >> Andrew Zhang wrote: > <snip> > >>> Here are some more details: > >>> > >>> NPE stack trace: > >>> > >>> Thread [main] (Suspended) > >>> NullPointerException.<init>() line: 34 > >>> AbstractInterruptibleChannel.<clinit>() line: 57 [local variables > >>> unavailable] > >>> > >>> Platform information: > >>> > >>> JRE: harmony-jre-580985 > >>> > >>> Eclipse: Version: 3.2.2 Build id: M20070212-1330 > >>> > >>> OS: Microsoft Windows Server 2003 R2 Standard Edition Service Pack 1 > >>> (Running on a VM) > >> Hello Andrew > >> > >> I've just thought about one thing. Modern processors have NX bit that > >> protects heap from execution. Modern operating systems can enable it so > >> that execution of heap results in page fault. > > wow - that's a clever piece of intuition! > > >> JVMTI breakpoints use bits of heap to execute instruction under > >> breakpoint, and since on usual ia32 platforms it works ok (as NX bit is > >> disabled by default), protection is not removed currently from these > >> heap regions. I've just found this out trying to port JVMTI code to > >> x86_64 where operating systems enable NX bit by default. This is > >> something I'm going to fix now. > >> > >> But if you have NX bit enabled as on your server, it may result in page > >> fault while executing an instrumented instruction. Page fault in java > >> code is treated as NPE by DRLVM. > >> > >> So I wonder, do you have by a change enabled Execution Disable Bit > (NX)? > >> I think windows 2003 server has such capability. > > > > > > Super, thanks Gregory and Tim! > > > > That's exactly the problem! Everything goes well after disabling NX. > > Don't thank me, I would never have thought of that! > > Is that something we need to add to a technical FAQ?
yeah, I think it would be really helpful! Regards, > Tim > -- Best regards, Andrew Zhang http://zhanghuangzhu.blogspot.com/
