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.
>>>
>>>

Reply via email to