java jstack tool insufficient memory or insufficient privilege to attach

*爱你&永不变心* 提交于 2020-01-12 07:35:28

问题


I am really confused about: In my windows 2008r2, I have a windows service, in fact it's a java progress running as SYSTEM user. Now, I use Jstack rawly to the the service. But it occur error :

 insufficient memory or insufficient privilege to attach

But if I use Jstack's options -F , it can work finely. I view the jdk's source, It uses a class BugSpotAgent to finish above.

I want to know the root cause I can't use Jstack rawly, is it the SYSTEM user privilege problem? I also have try to use PsExec.exe(a tool) to run my Jstack rawly(That means I will use SYSTEM user to run Jstack), but it still can't work.

Can you help me?

Thanks & Regards!


回答1:


jstack can only latch on to a process started by Same User in Same Session. When a session is not specified the psexec command latches on to console session and throws this error while trying to get thread dump.

The solution is to ensure the user and session used with psexec is the same as one used for target java process.

if it has been started by a regular user, a. use the same user credentials to login without -s or -h flag b. find the session ID in which the process was started. (You can find it using Task Manager and going to the Tab Users). Use this session id with the flag -i

psexec \\server-name -u username -p password -i session-id command

e.g.

psexec \\192.168.1.1 -u john -p pass123 -i 1 jstack.exe 4242

Note: If the java process has been started by a SYSTEM user use the flag -s



来源:https://stackoverflow.com/questions/20149635/java-jstack-tool-insufficient-memory-or-insufficient-privilege-to-attach

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!