Hi David, Yasumasa, It's broken on 32-bit as well? Ah, that's a surprise!
I'll do a build there as well and revise this... (Looks like a future enhancement will be to make the SA build 32-bit architectures on a 64-bit machine, as it currently doesn't do that.) Thanks Kevin On 02/12/2010 02:41, David Holmes wrote: > Hi Kevin, > > Seems to me the original problem here was that on 64-bit > PTRACE_GETREGS64 is not defined when on x86_64 - I could only find > reference to it on sparcv9. Your change seems to reduce to the following: > > #ifdef _LP64 > #ifdef PTRACE_GETREGS64 > #define PTRACE_GETREGS_REQ PTRACE_GETREGS64 > #elif defined(PTRACE_GETREGS) > #define PTRACE_GETREGS_REQ PTRACE_GETREGS > #elif defined (PT_GETREGS) > #define PTRACE_GETREGS_REQ PTRACE_GETREGS > #endif > #endif /* _LP64 */ > > which seems to completely ignore the 32-bit case ??? > > David > > Kevin Walls said the following on 12/02/10 02:01: >> Hi -- >> >> I've just been hitting that as well.... I think it needs to be dealt >> with as a separate bug as there may be a few which are similar - and >> 6359295 is marked fixed in 5.0 long ago... >> >> I just found your message after I'd done some investigating... The patch >> I was working with is to split one of the existing "if defined" >> statements, as currently the bug is: if we have PT_GETREGS defined, we >> use PTRACE_GETREGS to define PTRACE_GETREGS_REQ... We soon realise that >> may NOT be defined and give the "unsupported" message. So I can log and >> bug and get this done if it sounds good: >> >> [ke...@oldbox make]$ hg diff ../src/os/linux/ps_proc.c >> diff --git a/agent/src/os/linux/ps_proc.c b/agent/src/os/linux/ps_proc.c >> --- a/agent/src/os/linux/ps_proc.c >> +++ b/agent/src/os/linux/ps_proc.c >> @@ -124,9 +124,9 @@ >> #ifdef _LP64 >> #ifdef PTRACE_GETREGS64 >> #define PTRACE_GETREGS_REQ PTRACE_GETREGS64 >> -#endif >> -#else >> -#if defined(PTRACE_GETREGS) || defined(PT_GETREGS) >> +#elif defined(PTRACE_GETREGS) >> +#define PTRACE_GETREGS_REQ PTRACE_GETREGS >> +#elif defined (PT_GETREGS) >> #define PTRACE_GETREGS_REQ PTRACE_GETREGS >> #endif >> #endif /* _LP64 */ >> >> >> >> Regards >> Kevin >> >> >> >> On 15/11/2010 06:46, Yasumasa Suenaga wrote: >>> Hi. >>> >>> I and co-worker use jstack for various trouble shooting. >>> >>> We mainly use Java on Linux with AMD64 architecture. >>> However, jstack -F option doesn't work our platform. >>> >>> I ran jstack -F with LIBSAPROC_DEBUG=1 (environment variable), >>> I got following messages: >>> >>> >>> /***************/ >>> Thread 31933: (state = BLOCKED) >>> libsaproc DEBUG: ptrace(PTRACE_GETREGS, ...) not supported >>> Error occurred during stack walking: >>> sun.jvm.hotspot.debugger.DebuggerException: >>> sun.jvm.hotspot.debugger.DebuggerException: get_thread_regs failed for a lwp >>> /***************/ >>> >>> >>> In order to fix this problem, I made a patch for preprocessor >>> macro in "agent/src/os/linux/ps_proc.c" . >>> The patch that attached this mail works well on Fedora 13 x86_64. >>> >>> Please merge this patch if you don't fix this problem yet. >>> >>> >>> Best regards. >>> >>>