Thank you for the reply.

I've read your patch on a webrev.
Your patch will work on AMD64 architecture.
However, this patch will not work on x86 (32bit) architecture.
Preprocessor in GCC for i386 does not define "_LP64" .

-----------------
[r...@rhel4-4 test]# cat /etc/redhat-release
Red Hat Enterprise Linux ES release 4 (Nahant Update 4)
[r...@rhel4-4 test]# uname -a
Linux RHEL4-4 2.6.9-42.EL #1 Wed Jul 12 23:16:43 EDT 2006 i686 i686 i386 
GNU/Linux
[r...@rhel4-4 test]# rpm -q glibc
glibc-2.3.4-2.25
[r...@rhel4-4 test]# rpm -q gcc
gcc-3.4.6-3
[r...@rhel4-4 test]# touch test.h
[r...@rhel4-4 test]# cpp -dM test.h | grep _LP64
[r...@rhel4-4 test]#
-----------------


So, you need to modify the patch as follows:

-----------------
[r...@fedora13 OpenJDK7]# diff -u 
b118/openjdk/hotspot/agent/src/os/linux/ps_proc.c trunk/
openjdk/hotspot/agent/src/os/linux/ps_proc.c
--- a/agent/src/os/linux/ps_proc.c   2010-11-12 05:43:12.000000000 +0900
+++ b/agent/src/os/linux/ps_proc.c   2010-12-02 10:45:09.117050388 +0900
@@ -124,6 +124,8 @@
 #ifdef _LP64
 #ifdef PTRACE_GETREGS64
 #define PTRACE_GETREGS_REQ PTRACE_GETREGS64
+#elif defined(PTRACE_GETREGS)
+#define PTRACE_GETREGS_REQ PTRACE_GETREGS
 #endif
 #else
 #if defined(PTRACE_GETREGS) || defined(PT_GETREGS)
-----------------


Thanks.


(2010/12/02 1:41), Kevin Walls wrote:
> 
> Sorry, there was actually a typo in that diff, although it was good
> enough to be a solution on my system.
> 
> A webrev also:
> 
> http://cr.openjdk.java.net/~kevinw/7003789/webrev.00/
> 
> Thanks
> Kevin
> 
> 
> On 01/12/2010 16:01, Kevin Walls wrote:
>> 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.
>>>
>>>
> 


-- 
日本電信電話株式会社 研究企画部門 OSS センタ
応用技術ユニット Webグループ 

末永 恭正(すえなが やすまさ)

TEL: 03-5860-5105 (直通 5069)
E-mail: suenaga.yasum...@oss.ntt.co.jp

Reply via email to