VisualVM Profile at JDK 1.7_21 crashes with "Access denied" - java

May be you can help me with this problem.
Profiler crashes with "Access denied" message, then i start it for any local application. In a logfile I found:
java.io.IOException: Отказано в доступе
at sun.tools.attach.WindowsVirtualMachine.openProcess(Native Method)
at sun.tools.attach.WindowsVirtualMachine.<init>(WindowsVirtualMachine.java:56)
at sun.tools.attach.WindowsAttachProvider.attachVirtualMachine(WindowsAttachProvider.java:69)
at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:213)
at org.netbeans.modules.profiler.NetBeansProfiler.loadAgentIntoTargetJVM(NetBeansProfiler.java:762)
at org.netbeans.modules.profiler.NetBeansProfiler.attachToApp(NetBeansProfiler.java:734)
at com.sun.tools.visualvm.profiler.ApplicationProfilerView$MasterViewSupport.startProfiling(ApplicationProfilerView.java:309)
at com.sun.tools.visualvm.profiler.ApplicationProfilerView$MasterViewSupport.access$900(ApplicationProfilerView.java:140)
at com.sun.tools.visualvm.profiler.ApplicationProfilerView$MasterViewSupport$3.run(ApplicationProfilerView.java:262)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1372)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1952)
Application runs on the same JVM HotSpot 1.07.0_21 x32 (VisualVM from JDK 1.6 works fine), using just next options:
-client -Xmx1524M
Any suggestions?
UPD: OS is WindowsXP sp3 x32

Have you checked their troubleshooting section?
in particular:
Insufficient permissions for %TMP%\hsperfdata_username folder - make
sure you're able to create a file in the directory and eventually
update the permissions for full folder access. Alternatively you can
just re-create the folder which should automatically set the correct
access rights. See see this forums.sun.com thread for more details.

For me I got below error while creating the heap-dump:
[com.sun.tools.visualvm.attach.AttachModelImpl]: takeHeapDump java.io.IOException: Access is denied
I could manuallya access this folder %TMP%\hsperfdata_username.
Hence I thought of launching the visualVM in Administrator mode,It resolved the issue.
Thanks #Lorenzo for inputs.

Related

Update downloader with silent Version check -> Error opening media file

We use the install4j "Update downloader with silent Version check" to periodically update our application installer.
With the introduction of the "Update downloader with silent Version check", we have noticed two problems from the Users.
Error opening media file as can be seen in the screenshot. The Media file is the file that is downloaded in the 1st Step of the updater. Screenshot below
The error log file mentions
[0:918] extracting files
[0:932] Included files: 16
[3:537] ERROR: Could not open FFFFFFFFFFFFFFFF 32 C:\Users\ttttttttt\Downloads\xxxxxxxxxx_7_xxxx_yy_zz_64Bit.exe
[128:104] emptying C:\Users\ttttttttt\AppData\Local\Temp\e4j8A6C.tmp_dir1662356615
The Users have not opened the downloaded file. Normally clickin on OK and a retry generally works.
The second problem some users are facing
[![enter image description here][2]][2]
The 2nd error mentions that the bgupdater.exe is already running. Even here, clicking on "Wiederholen" generally works and the update proceeds.
What we do not understand is that why these errors arise. A retry proceeds without errors in all cases normally.
The application uses install4j version 8 and java 1.8
[2]: https://i.stack.imgur.com/jVl3I.png
The first problem looks like anti-virus software problem where the anti-virus software detects a .exe file that is extracted to the %TEMP% directory and immediately quarantines it.
For the second problem, please locate the log file of the running bgupdater process which is located in the %TEMP% directory. Either you start the bgupdater process too frequently or it is hanging somewhere, you would need to find that out. To install a new version, all executables of the installation must be closed.

java.sql.SQLException: Problems with loading native library/missing methods: no ttJdbc181 in java.library.path

I am running TimesTen facing application in local (in eclipse IDE). URL and username and password seems to be fine. But I am getting below exception.
java.sql.SQLException: Problems with loading native library/missing methods: no ttJdbc181 in java.library.path
at com.timesten.jdbc.JdbcOdbcConnection.connect(JdbcOdbcConnection.java:2012)
at com.timesten.jdbc.TimesTenDriver.connect(TimesTenDriver.java:296)
at com.timesten.jdbc.TimesTenDriver.connect(TimesTenDriver.java:152)
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:319)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:212)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:736)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:668)
at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:483)
at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:154)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getPool(DataSourceProxy.java:214)
I checked the bin folder of TimsTen installation directory did not see ttJdbc181.dll file Instead I found ttJdbcCS.181 in the folder. I don't know why code is looking for ttjdbc181.dll file. I have tried adding ttjdbc8,9,10,11 to class path still same issue. Any help to resolve this issue will be appreciated.
Had same stack trace.
All I had to do is to add "jdbc:timesten:client:" to my connection string. It is driver and protocol as far as my understanding goes.
My connection string looks like follows:
jdbc:timesten:client:TTC_Server=127.0.0.1;TTC_Server_DSN=myDsn;UID=user;PWD=userpasswd;TCP_PORT=9999;
This was issue on Windows. Assume same would arise for Linux.
Also please ensure you have correct CLASSPATH, Lib, Include, Path environment variables.
Windows installer usually takes care of this. On Linux you have to run ttenv.sh script from directory of your installed instance, this will set env vars as required.

FileNotFound: Access Denied

I have a new windows 10 machine. Tomcat throwing the error -
FileNotFoundException - Access Denied
while writing application log. I am able to create folders or save file in the same path but when i try to do that programmatic, its throwing the error
Access Denied
When i checked 'canWrite()' on the path its returning true.
canWrite:true
java.io.FileNotFoundException: C:\Users\<User>\logs (Access is denied)
I tried giving 'full control' to the folder but didn't help.
Any pointers ?
Thanks!
Reboot and retry (I have seen exact the same in a Windows Domain environment. After reboot it works.);
Is the tomcat started as a service, or as standalone app? Check the user who own the tomcat process;
If both failed, try to delete the log folder, to see if any other process locks the log folder;
At last, you can use process monitor (https://learn.microsoft.com/en-us/sysinternals/downloads/procmon) to drill into the internal data from windows, to see what really happens.

Sqlite java.lang.UnsatisfiedLinkError in linux

I have a program that uses Sqlite database. It works fine on Windows (exported jar or directly in Eclipse) but when I move it to linux server (plan is to use run it at certain intervals, cron job). I'm exporting it to jar from Eclipse and packing the sqlite-jdbc4-3.8.2-SNAPSHOT.jar with it. Error is this:
/$ /usr/bin/java -jar /home/username/Software.jar /home/username/
java.lang.UnsatisfiedLinkError: /tmp/sqlite-3.8.2-amd64-libsqlitejdbc.so: /tmp/sqlite-3.8.2-amd64-libsqlitejdbc.so: failed to map segment from shared object: Operation not permitted
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.sqlite.core.NativeDB._open(Ljava/lang/String;I)V
at org.sqlite.core.NativeDB._open(Native Method)
at org.sqlite.core.DB.open(DB.java:161)
at org.sqlite.core.CoreConnection.open(CoreConnection.java:145)
at org.sqlite.core.CoreConnection.<init>(CoreConnection.java:66)
at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:21)
at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:23)
at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:44)
at org.sqlite.JDBC.createConnection(JDBC.java:113)
at org.sqlite.JDBC.connect(JDBC.java:87)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
....
So before you ask, I've made sure that sqlite-3.8.2-amd64-libsqlitejdbc.so in /tmp/ has all permissions (rwxrwxrwx). Still that native library is causing problems. It does get copied in /tmp/ folder though. That being said I totally suck in Linux... and for that reason I'm pretty much clueless what to try next.
What should I do? Switch connector?
EDIT:
Solved the problem by using System.setProperty("java.io.tmpdir", "/home/username/"); Apparently it for some reason couldn't execute the native library from tmp folder... Probably because it was created by root. Also I had to revert back to sqlite-jdbc-3.7.2.jar because the new one crashes on linux.
I had same problem, and I found the solution in this GitHub issue:
JAVA_OPTS=-Djava.io.tmpdir=/path/to/some/other/tmpdir bin/cerebro
Also look at this other SO answer.

java.io.IOException: The system cannot find the path specified

On a particular server (Windows 2012 server R2) I am having trouble creating a temp file. I get the following error everytime I try.
java.io.IOException: The system cannot find the path specified
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createTempFile(Unknown Source)
etc..
The error happens everytime the following code is ran:
InputStream inputStream = portalBean.createPDF( sessionID, foCode );
Things I have tried
Changed the java.io.tmpdir variable on the fly. System.setProperty("java.io.tmpdir", "C:\\");
Added -Djava.io.tmpdir=c:\\temp to the webnetwork lax file to an unrestricted location.
I tried setting the webNetwork service to run as a specified user with rights to temp files e.g. the Administrator.
Made sure I have free disk space and I cleaned out the c:\windows\temp folder.
Made sure the tmp environment variables were set to their default values.
I also tried running the service from a command prompt which was opened with the Run As Administrator option.
And the IOException lingers still. I have another server running the same code without issue (Windows Server 2012).
Does anyone else have any Ideas of what else I can try to resolve this issue? And or any tips on how I can debug the issue more thoroughly to get a grasp of what is going on?
One tool you can use to debug this is process monitor from system internal tool kit. The step is: add a filter to only monitor your process (I think it is javaw.exe in your case), after the error happens, go through the file activities in the process monitor log, you can find how the process is finding files and which directories the process searched. If the process is searching in the wrong directory, you can find it from the log.
I just used this tool to figure out a JVM crash problem today.
Based on the description of your problem, I guess the path variable of the process is changed in the middle of your code, with another tool process explore you can view the path variable of the process, it might help.
Try and create instead a directory somewhere under your home directory:
final Path tmpdir = Paths.get(System.getProperty("user.home"), "tmp");
Files.createDirectories(tmpdir);
System.setProperty("java.io.tmpdir", tmpdir.toAbsolutePath().toString());
Then try and Files.createTempFile() in there.
Note that if Files.createDirectories() refers to an existing file which is not a directory, you'll get a FileAlreadyExistsException.

Categories

Resources