Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Phoenicis does not find directories that are obviously there #1107

Open
Zemogiter opened this issue Aug 24, 2019 · 20 comments
Open

Phoenicis does not find directories that are obviously there #1107

Zemogiter opened this issue Aug 24, 2019 · 20 comments

Comments

@Zemogiter
Copy link
Contributor

Zemogiter commented Aug 24, 2019

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)
@madoar
Copy link
Collaborator

madoar commented Aug 24, 2019

@ImperatorS79 I think you're more knowledgeable than me about how the verb scripts should work. Can you take a look at this?

@ImperatorS79
Copy link
Contributor

I will add some fileExists check then.

@ImperatorS79
Copy link
Contributor

ImperatorS79 commented Aug 24, 2019

The Fonts directory should exist and I do not understand dotnet20 error.

@Zemogiter
Copy link
Contributor Author

Zemogiter commented Aug 24, 2019

And the Fonts directory does exist in system32. Weird. I also do not get the dotnet20 error.

@Zemogiter
Copy link
Contributor Author

Fixed by #1116

@ImperatorS79
Copy link
Contributor

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.

@ImperatorS79 ImperatorS79 reopened this Sep 11, 2019
@ImperatorS79 ImperatorS79 changed the title Sims 3 fails to install Phoenicis does not find directory that are obviously there Sep 11, 2019
@ImperatorS79 ImperatorS79 changed the title Phoenicis does not find directory that are obviously there Phoenicis does not find directories that are obviously there Sep 11, 2019
@madoar
Copy link
Collaborator

madoar commented Sep 11, 2019

Does this happen only sporadic for you, if not which script (chain) leads to this?

@ImperatorS79
Copy link
Contributor

I have just tested it again running adobe photoshop script. It did not detect system32 despite the directory exists (the container was created before).

@madoar
Copy link
Collaborator

madoar commented Sep 12, 2019

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.

@ImperatorS79
Copy link
Contributor

How can I print the output of ls ?

@madoar
Copy link
Collaborator

madoar commented Sep 12, 2019

Try print(ls(<folder>))

@ImperatorS79
Copy link
Contributor

[Ljava.lang.String;@665bec15

@madoar
Copy link
Collaborator

madoar commented Sep 12, 2019

Then try ls(<folder>).forEach(file => print(file))

@ImperatorS79
Copy link
Contributor

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

@madoar
Copy link
Collaborator

madoar commented Sep 12, 2019

Do you know which verb produces the error?

@ImperatorS79
Copy link
Contributor

ImperatorS79 commented Sep 12, 2019

gdiplus I guess

@madoar
Copy link
Collaborator

madoar commented Sep 12, 2019

If this is the case the following line produces the error:

cp(`${prefixDirectory}/drive_c/gdiplus/amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_2b24536c71ed437a/gdiplus.dll`, system64directory);

This in turn means that system64directory links to system32? Is this correct?

@ImperatorS79
Copy link
Contributor

ImperatorS79 commented Sep 12, 2019

Impossible. The prefix is 32 bits.

On a 64 bits prefix 64 bits libs go to system32 and 32 bits libs to sysWoW64

@madoar
Copy link
Collaborator

madoar commented Sep 12, 2019

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

@ImperatorS79
Copy link
Contributor

OH I know it is my fault.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants