Phoenicis does not find directories that are obviously there
Zemogiter opened this issue ยท 20 comments
When the script executes the mfc42 verb I get this error:
[ERROR] org.phoenicis.multithreading.ControlledThreadPoolExecutorService (l.64) - Path "/home/jonasz/.Phoenicis/containers//wineprefix//The Sims 3//drive_c/windows/system32/mfc42.dll" does not exist
at org.phoenicis.tools.files.FileUtilities.remove(FileUtilities.java:165)
at <js> remove(Unnamed:101:2289-2318)
at <js> Wine.mfc42(Unnamed:21:722-768)
at <js> install(Unnamed:57:1669-1680)
at org.graalvm.truffle/com.oracle.truffle.polyglot.ObjectProxyHandler.invoke(HostInteropReflect.java:678)
at com.sun.proxy.$Proxy44.install(Unknown Source)
at org.phoenicis.engines.VerbsManager.lambda$installVerb$0(VerbsManager.java:73)
at org.phoenicis.scripts.session.PhoenicisInteractiveScriptSession.eval(PhoenicisInteractiveScriptSession.java:35)
at org.phoenicis.scripts.interpreter.BackgroundScriptInterpreter.lambda$createInteractiveSession$1(BackgroundScriptInterpreter.java:45)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by host exception: java.lang.IllegalArgumentException: Path "/home/jonasz/.Phoenicis/containers//wineprefix//The Sims 3//drive_c/windows/system32/mfc42.dll" does not exist
Exception in thread "pool-3-thread-4" Path "/home/jonasz/.Phoenicis/containers//wineprefix//The Sims 3//drive_c/windows/system32/mfc42.dll" does not exist
at org.phoenicis.tools.files.FileUtilities.remove(FileUtilities.java:165)
at <js> remove(Unnamed:101:2289-2318)
at <js> Wine.mfc42(Unnamed:21:722-768)
at <js> install(Unnamed:57:1669-1680)
at org.graalvm.truffle/com.oracle.truffle.polyglot.ObjectProxyHandler.invoke(HostInteropReflect.java:678)
at com.sun.proxy.$Proxy44.install(Unknown Source)
at org.phoenicis.engines.VerbsManager.lambda$installVerb$0(VerbsManager.java:73)
at org.phoenicis.scripts.session.PhoenicisInteractiveScriptSession.eval(PhoenicisInteractiveScriptSession.java:35)
at org.phoenicis.scripts.interpreter.BackgroundScriptInterpreter.lambda$createInteractiveSession$1(BackgroundScriptInterpreter.java:45)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by host exception: java.lang.IllegalArgumentException: Path "/home/jonasz/.Phoenicis/containers//wineprefix//The Sims 3//drive_c/windows/system32/mfc42.dll" does not exist
Seems like the script is expecting that file to be here so it can remove it and continue.
UPDATE: Tahoma verb is having similiar issues:
Extracting to: /home/jonasz/.Phoenicis/containers//wineprefix//The Sims 3//drive_c/tahoma/
/home/jonasz/.Phoenicis/resources///IELPKTH.CAB: WARNING; possible 5592 extra bytes at end of file.
Extracting cabinet: /home/jonasz/.Phoenicis/resources///IELPKTH.CAB
All done, no errors.
[ERROR] org.phoenicis.multithreading.ControlledThreadPoolExecutorService (l.64) - Path "/home/jonasz/.Phoenicis/containers//wineprefix//The Sims 3//drive_c/windows/Fonts" does not exist
at org.phoenicis.tools.files.FileUtilities.copy(FileUtilities.java:139)
at <js> cp(Unnamed:56:1321-1354)
at <js> Wine.tahoma(Unnamed:27:865-943)
at <js> install(Unnamed:52:1568-1580)
at org.graalvm.truffle/com.oracle.truffle.polyglot.ObjectProxyHandler.invoke(HostInteropReflect.java:678)
at com.sun.proxy.$Proxy44.install(Unknown Source)
at org.phoenicis.engines.VerbsManager.lambda$installVerb$0(VerbsManager.java:73)
at org.phoenicis.scripts.session.PhoenicisInteractiveScriptSession.eval(PhoenicisInteractiveScriptSession.java:35)
at org.phoenicis.scripts.interpreter.BackgroundScriptInterpreter.lambda$createInteractiveSession$1(BackgroundScriptInterpreter.java:45)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by host exception: java.lang.IllegalArgumentException: Path "/home/jonasz/.Phoenicis/containers//wineprefix//The Sims 3//drive_c/windows/Fonts" does not exist
Exception in thread "pool-3-thread-4" Path "/home/jonasz/.Phoenicis/containers//wineprefix//The Sims 3//drive_c/windows/Fonts" does not exist
at org.phoenicis.tools.files.FileUtilities.copy(FileUtilities.java:139)
at <js> cp(Unnamed:56:1321-1354)
at <js> Wine.tahoma(Unnamed:27:865-943)
at <js> install(Unnamed:52:1568-1580)
at org.graalvm.truffle/com.oracle.truffle.polyglot.ObjectProxyHandler.invoke(HostInteropReflect.java:678)
at com.sun.proxy.$Proxy44.install(Unknown Source)
at org.phoenicis.engines.VerbsManager.lambda$installVerb$0(VerbsManager.java:73)
at org.phoenicis.scripts.session.PhoenicisInteractiveScriptSession.eval(PhoenicisInteractiveScriptSession.java:35)
at org.phoenicis.scripts.interpreter.BackgroundScriptInterpreter.lambda$createInteractiveSession$1(BackgroundScriptInterpreter.java:45)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by host exception: java.lang.IllegalArgumentException: Path "/home/jonasz/.Phoenicis/containers//wineprefix//The Sims 3//drive_c/windows/Fonts" does not exist
UPDATE 2: dotnet20 also fails:
[ERROR] org.phoenicis.multithreading.ControlledThreadPoolExecutorService (l.64) - java.lang.UnsupportedOperationException: Unsupported operation Value.newInstance(Object...) for '{}'(language: JavaScript, type: Object). You can ensure that the operation is supported using Value.canInstantiate().
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValue.unsupported(PolyglotValue.java:389)
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValue.newInstanceUnsupported(PolyglotValue.java:208)
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValue$InteropCodeCache$NewInstanceNode.doCached(PolyglotValue.java:1496)
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValueFactory$InteropCodeCacheFactory$NewInstanceNodeGen.executeAndSpecialize(PolyglotValueFactory.java:2545)
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValueFactory$InteropCodeCacheFactory$NewInstanceNodeGen.executeImpl(PolyglotValueFactory.java:2496)
at org.graalvm.truffle/com.oracle.truffle.polyglot.HostToGuestRootNode.execute(HostToGuestRootNode.java:94)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:328)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callRoot(OptimizedCallTarget.java:318)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:305)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.doInvoke(OptimizedCallTarget.java:287)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callIndirect(OptimizedCallTarget.java:230)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:217)
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValue$InteropValue.newInstance(PolyglotValue.java:2023)
at org.graalvm.sdk/org.graalvm.polyglot.Value.newInstance(Value.java:388)
at org.phoenicis.engines.VerbsManager.lambda$installVerb$0(VerbsManager.java:70)
at org.phoenicis.scripts.session.PhoenicisInteractiveScriptSession.eval(PhoenicisInteractiveScriptSession.java:35)
at org.phoenicis.scripts.interpreter.BackgroundScriptInterpreter.lambda$createInteractiveSession$1(BackgroundScriptInterpreter.java:45)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Exception in thread "pool-3-thread-4" java.lang.UnsupportedOperationException: Unsupported operation Value.newInstance(Object...) for '{}'(language: JavaScript, type: Object). You can ensure that the operation is supported using Value.canInstantiate().
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValue.unsupported(PolyglotValue.java:389)
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValue.newInstanceUnsupported(PolyglotValue.java:208)
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValue$InteropCodeCache$NewInstanceNode.doCached(PolyglotValue.java:1496)
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValueFactory$InteropCodeCacheFactory$NewInstanceNodeGen.executeAndSpecialize(PolyglotValueFactory.java:2545)
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValueFactory$InteropCodeCacheFactory$NewInstanceNodeGen.executeImpl(PolyglotValueFactory.java:2496)
at org.graalvm.truffle/com.oracle.truffle.polyglot.HostToGuestRootNode.execute(HostToGuestRootNode.java:94)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:328)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callRoot(OptimizedCallTarget.java:318)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:305)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.doInvoke(OptimizedCallTarget.java:287)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callIndirect(OptimizedCallTarget.java:230)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:217)
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotValue$InteropValue.newInstance(PolyglotValue.java:2023)
at org.graalvm.sdk/org.graalvm.polyglot.Value.newInstance(Value.java:388)
at org.phoenicis.engines.VerbsManager.lambda$installVerb$0(VerbsManager.java:70)
at org.phoenicis.scripts.session.PhoenicisInteractiveScriptSession.eval(PhoenicisInteractiveScriptSession.java:35)
at org.phoenicis.scripts.interpreter.BackgroundScriptInterpreter.lambda$createInteractiveSession$1(BackgroundScriptInterpreter.java:45)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
@ImperatorS79 I think you're more knowledgeable than me about how the verb scripts should work. Can you take a look at this?
I will add some fileExists
check then.
The Fonts
directory should exist and I do not understand dotnet20
error.
And the Fonts
directory does exist in system32. Weird. I also do not get the dotnet20 error.
I will reopen this because I got the same kind of error:
[ERROR] org.phoenicis.multithreading.ControlledThreadPoolExecutorService (l.64) - Path "/home/vmachine/.Phoenicis/containers//wineprefix//Adobe Photoshop//drive_c/windows/system32" does not exist
at org.phoenicis.tools.files.FileUtilities.copy(FileUtilities.java:139)
at <js> cp(Unnamed:56:1251-1284)
at <js> go(Unnamed:64:2597-2692)
at <js> :anonymous(Unnamed:29:1264-1285)
at <js> go(Unnamed:42:1206-1240)
at org.graalvm.truffle/com.oracle.truffle.polyglot.ObjectProxyHandler.invoke(HostInteropReflect.java:678)
at com.sun.proxy.$Proxy43.go(Unknown Source)
at org.phoenicis.javafx.components.application.skin.ApplicationInformationPanelSkin.lambda$installScript$7(ApplicationInformationPanelSkin.java:237)
at org.phoenicis.scripts.session.PhoenicisInteractiveScriptSession.eval(PhoenicisInteractiveScriptSession.java:35)
at org.phoenicis.scripts.interpreter.BackgroundScriptInterpreter.lambda$createInteractiveSession$1(BackgroundScriptInterpreter.java:45)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:835)
I just checked and system 32 is obviously there.
Does this happen only sporadic for you, if not which script (chain) leads to this?
I have just tested it again running adobe photoshop script. It did not detect system32 despite the directory exists (the container was created before).
Can you add a debug print in the Adobe script before the verb that does the check is called? Maybe even print all existing directory with ls
. It would be useful to know what the script actually "sees" at that moment.
How can I print the output of ls ?
Try print(ls(<folder>))
[Ljava.lang.String;@665bec15
Then try ls(<folder>).forEach(file => print(file))
system32 exists:
Microsoft.NET
Resources
twain_32
win.ini
temp
mono
winsxs
winhelp.exe
command
hh.exe
Fonts
help
Installer
winhlp32.exe
tasks
regedit.exe
notepad.exe
rundll.exe
system.ini
explorer.exe
system32
logs
system
inf
twain.dll
twain_32.dll
Do you know which verb produces the error?
gdiplus I guess
If this is the case the following line produces the error:
This in turn means that system64directory
links to system32
? Is this correct?
Impossible. The prefix is 32 bits.
On a 64 bits prefix 64 bits libs go to system32 and 32 bits libs to sysWoW64
But that is where the error message seems to link to. You can try by adding a debug output to line 54 and 56 (i.e. before and after the cp
call) to see if it is maybe somewhere else where the crash occurs
OH I know it is my fault.