While narrowing down the problems I was having with maven and cffi, I came across the maven-embedded.lisp file ( https://common-lisp.net/svn/armedbear/branches/1.4.0/contrib/abcl-asdf/maven... ) where I saw the sys:run-program.
I now have ABCL installed on both Linux and Windows, and have problems on both when issuing
#+windows(sys:run-program "where.exe" nil) #+linux(sys:run-program "which" nil)
On Windows, the first call fails, while the second succeeds. On Linux, the call fails, and repeated calls also fail.
Is this just me or can anyone else reproduce this? Thanks.
Transcript of the Windows 10 session (Linux follows)
P:>java -jar c:\mv-program-files\abcl-bin-1.4.0\abcl.jar --noinit Armed Bear Common Lisp 1.4.0 Java 1.8.0_112 Oracle Corporation Java HotSpot(TM) 64-Bit Server VM Low-level initialization completed in 0.274 seconds. Startup completed in 4.28 seconds. Type ":help" for a list of available commands. CL-USER(1): (sys:run-program "which.exe" nil) ;;; *First invocation results in error* Error loading jar:file:C:/mv-program-files/abcl-bin-1.4.0/abcl.jar!/org/armedbear/lisp/run-program.abcl at line 166 (offset 8688) #<THREAD "interpreter" {6A8B2747}>: Debugger invoked on condition of type ERROR Class not found: java.lang.UNIXProcess ;;; *ERROR* Restarts: 0: TOP-LEVEL Return to top level. [1] SYS(2): 0 java.lang.ExceptionInInitializerError
... Java stack elided
Caused by: org.armedbear.lisp.Go Error loading jar:file:C:/mv-program-files/abcl-bin-1.4.0/abcl.jar!/org/armedbear/lisp/run-program.abcl at line 166 (offset 8688) #<THREAD "interpreter" {6A8B2747}>: Debugger invoked on condition of type ERROR Compiled function can't be loaded: org.armedbear.lisp.run_program_49 from org.armedbear.lisp.Pathname@60a4bd75 Restarts: 0: TOP-LEVEL Return to top level. [1] SYS(3): 0 CL-USER(4): (sys:run-program "which.exe" nil) ;;; *Second invocation succeeds* #S(SYSTEM:PROCESS :JPROCESS #<java.lang.ProcessImpl java.lang.ProcessImpl@6aaa6218 {2F20252D}> :%INPUT #S(SYSTEM::SYSTEM-STREAM) :%OUTPUT #S(SYSTEM::SYSTEM-STREAM) :%ERROR #S(SYSTEM::SYSTEM-STREAM)) CL-USER(5):
On Linux I work through Slime. Here is the startup message on a RedHat EL6. I hope my Java patch is recent enough.
Armed Bear Common Lisp 1.4.0 Java 1.6.0_40 Sun Microsystems Inc. OpenJDK 64-Bit Server VM Low-level initialization completed in 0.491 seconds. Startup completed in 2.488 seconds. Using probed value of abcl-contrib: '/usr/local/share/java/abcl-contrib.jar'. Added jar:file:/usr/local/share/java/abcl-contrib.jar!/quicklisp/ to ASDF. Added jar:file:/usr/local/share/java/abcl-contrib.jar!/mvn/ to ASDF. Added jar:file:/usr/local/share/java/abcl-contrib.jar!/jss/ to ASDF. Added jar:file:/usr/local/share/java/abcl-contrib.jar!/jfli/ to ASDF. Added jar:file:/usr/local/share/java/abcl-contrib.jar!/asdf-jar/ to ASDF. Added jar:file:/usr/local/share/java/abcl-contrib.jar!/abcl-asdf/ to ASDF. Loading /home/mv/.abclrc completed in 9.644 seconds. Type ":help" for a list of available commands. CL-USER(1): ; Loading /home/sm/software/slime/swank-loader.lisp ...
Doing (sys:run-program "which" nil) the error backtrace is:
Class not found: java.lang.ProcessBuilder$Redirect [Condition of type ERROR]
Restarts: 0: [RETRY] Retry SLIME REPL evaluation request. 1: [*ABORT] Return to SLIME's top level. 2: [ABORT] Abort thread.
Backtrace: 0: (#<FUNCTION {5A18A372}> #<ERROR {47BE45A7}> #<FUNCTION {5A18A372}>) 1: (APPLY #<FUNCTION {5A18A372}> (#<ERROR {47BE45A7}> #<FUNCTION {5A18A372}>)) 2: (SYSTEM::RUN-HOOK SYSTEM::*INVOKE-DEBUGGER-HOOK* #<ERROR {47BE45A7}> #<FUNCTION {5A18A372}>) 3: (INVOKE-DEBUGGER #<ERROR {47BE45A7}>) 4: org.armedbear.lisp.Lisp.error(Lisp.java:382) 5: org.armedbear.lisp.Java.classForName(Java.java:1299) 6: org.armedbear.lisp.Java.javaClass(Java.java:1332) 7: org.armedbear.lisp.Java.javaClass(Java.java:1306) 8: org.armedbear.lisp.Java.jfield(Java.java:177) 9: org.armedbear.lisp.Java$pf_jfield.execute(Java.java:272) 10: org.armedbear.lisp.Primitive.execute(Primitive.java:123) 11: (JFIELD "java.lang.ProcessBuilder$Redirect" "INHERIT") 12: (SYSTEM:INIT-FASL :VERSION 42) 13: (SYSTEM::%MAKE-PROCESS-BUILDER "which" NIL) 14: (SYSTEM:RUN-PROGRAM "which" NIL) 15: (SYSTEM::%EVAL (SYSTEM:RUN-PROGRAM "which" NIL)) 16: (EVAL (SYSTEM:RUN-PROGRAM "which" NIL))
On 1/11/17 17:01, Mirko Vukovic wrote:
While narrowing down the problems I was having with maven and cffi, I came across the maven-embedded.lisp file ( https://common-lisp.net/svn/armedbear/branches/1.4.0/contrib/abcl-asdf/maven... ) where I saw the sys:run-program.
I now have ABCL installed on both Linux and Windows, and have problems on both when issuing
#+windows(sys:run-program "where.exe" nil) #+linux(sys:run-program "which" nil)
On Windows, the first call fails, while the second succeeds. On Linux, the call fails, and repeated calls also fail.
Is this just me or can anyone else reproduce this? Thanks.
Transcript of the Windows 10 session (Linux follows)
P:>java -jar c:\mv-program-files\abcl-bin-1.4.0\abcl.jar --noinit Armed Bear Common Lisp 1.4.0 Java 1.8.0_112 Oracle Corporation Java HotSpot(TM) 64-Bit Server VM Low-level initialization completed in 0.274 seconds. Startup completed in 4.28 seconds. Type ":help" for a list of available commands. CL-USER(1): (sys:run-program "which.exe" nil) ;;; *First invocation results in error* Error loading jar:file:C:/mv-program-files/abcl-bin-1.4.0/abcl.jar!/org/armedbear/lisp/run-program.abcl at line 166 (offset 8688) #<THREAD "interpreter" {6A8B2747}>: Debugger invoked on condition of type ERROR Class not found: java.lang.UNIXProcess ;;; *ERROR*
I think we need to fix SYS:RUN-PROGAM under Windows, file this as an active bug in Trac, and release abcl-1.4.1. Alternatively you could try building ABCL from source (there's a [Dockerfile][] which will do it for ya, but you need to understand Docker Engine a bit to interact with it.
[Dockerfile]: http://abcl.org/trac/browser/trunk/abcl/Dockerfile
More when I get the time…
On Fri, Jan 13, 2017 at 6:15 AM Mark Evenson evenson@panix.com wrote:
On 1/11/17 17:01, Mirko Vukovic wrote:
While narrowing down the problems I was having with maven and cffi, I
came
across the maven-embedded.lisp file (
https://common-lisp.net/svn/armedbear/branches/1.4.0/contrib/abcl-asdf/maven...
) where I saw the sys:run-program.
I now have ABCL installed on both Linux and Windows, and have problems on both when issuing
#+windows(sys:run-program "where.exe" nil) #+linux(sys:run-program "which" nil)
On Windows, the first call fails, while the second succeeds. On Linux,
the
call fails, and repeated calls also fail.
Is this just me or can anyone else reproduce this? Thanks.
Transcript of the Windows 10 session (Linux follows)
P:>java -jar c:\mv-program-files\abcl-bin-1.4.0\abcl.jar --noinit Armed Bear Common Lisp 1.4.0 Java 1.8.0_112 Oracle Corporation Java HotSpot(TM) 64-Bit Server VM Low-level initialization completed in 0.274 seconds. Startup completed in 4.28 seconds. Type ":help" for a list of available commands. CL-USER(1): (sys:run-program "which.exe" nil) ;;; *First invocation
results
in error* Error loading
jar:file:C:/mv-program-files/abcl-bin-1.4.0/abcl.jar!/org/armedbear/lisp/run-program.abcl
at line 166 (offset 8688) #<THREAD "interpreter" {6A8B2747}>: Debugger invoked on condition of type ERROR Class not found: java.lang.UNIXProcess ;;; *ERROR*
I think we need to fix SYS:RUN-PROGAM under Windows, file this as an active bug in Trac, and release abcl-1.4.1. Alternatively you could try building ABCL from source (there's a [Dockerfile][] which will do it for ya, but you need to understand Docker Engine a bit to interact with it.
More when I get the time…
When I get time I will try to build ABCL from source using the instructions on the web site. From what I read, all I need to install is SDK and Ant.
Also, note that in the original email I wrote that I had an error on Linux as well with Run Program.
For now, run-program bug is not a show-stopper for me on Windows. Instead it is the stack overflows when loading libraries from Slime (which I posted on the Slime group). In the meantime, I will do software development on ABCL on Linux.
Mirko
armedbear-devel@common-lisp.net