Chun Tian (binghe)
2011-03-20 15:52:32 UTC
Hi, ABCL developers
I found my program have some CLOS code which could get the weakness of ABCL ...
It's cl-net-snmp [1], which I just release a whole new version few days ago. My goal on ABCL is to make sure the server-side version (a pure Lisp SNMP Agent) run as a separated thread in JVM, so that people can use my program to remotely monitor any Java (or ABCL) servers. (I know some ABCL people are fixing bordeaux-threads, I'm watching this work and hope it could be done soon)
Now I need help. If one could spend 5 minutes do a SVN checkout of the release branch:
https://cl-net-snmp.svn.sourceforge.net/svnroot/cl-net-snmp/snmp/branches/6
and try to ASDF load it (you'll need usocket 0.5 and ironclad), two major CLOS bug of ABCL will show up, one is at "pdu.lisp", as what the mail title said, The value :LONG is not of type (MEMBER NIL :BOOLEAN).
I have no idea how to fix it.
Regards,
Chun Tian (binghe)
[1] http://common-lisp.net/project/cl-net-snmp/snmp.html
Below are the error outputs when compiling a lisp file from cl-net-snmp:
#<THREAD "interpreter" {24CCF86}>: Debugger invoked on condition of type TYPE-ERROR
The value :LONG is not of type (MEMBER NIL :BOOLEAN).
Restarts:
0: TRY-RECOMPILING Try recompiling pdu
1: RETRY Retry compiling component ("snmp" "pdu").
2: ACCEPT Continue, treating compiling component ("snmp" "pdu") as having been successful.
3: TOP-LEVEL Return to top level.
[1] SNMP(2): :bt
0: (SYSTEM:BACKTRACE)
1: (INVOKE-DEBUGGER #<TYPE-ERROR {6BA52C90}>)
2: (JVM::COMPILE-FORM #<JVM::LET/LET*-NODE {2910D926}> JVM::STACK :LONG)
3: (JVM:COMPILE-DEFUN
NIL
(LAMBDA (MOP::ARGS MOP::NEXT-EMFUN)
(DECLARE (IGNORE MOP::NEXT-EMFUN))
(LET ((SNMP::PDU (%CAR MOP::ARGS)))
(DECLARE (IGNORABLE SNMP::PDU))
(DECLARE (IGNORABLE SNMP::PDU))
(BLOCK SNMP::GENERATE-REQUEST-ID
(WITH-SLOTS (SNMP::REQUEST-ID-COUNTER)
SNMP::PDU
(THE (UNSIGNED-BYTE 32)
(LOGAND (PORTABLE-THREADS:ATOMIC-INCF SNMP::REQUEST-ID-COUNTER)
4294967295))))))
NIL
"/Users/binghe/.cache/common-lisp/abcl-0.26.0-dev-svn-13251-fasl37-macosx-java/Users/binghe/Lisp/packages/snmp/ASDF_TMP_pdu_6.cls"
#<FILE-STREAM {6539DEFE}>
NIL)
4: (#<FUNCTION {753896F2}>)
5: (JRUN-EXCEPTION-PROTECTED #<FUNCTION {753896F2}>)
6: (SYSTEM::C-E-M-1
(MOP::ENSURE-METHOD 'SNMP::GENERATE-REQUEST-ID
:LAMBDA-LIST
'(SNMP::PDU)
:QUALIFIERS
'NIL
:SPECIALIZERS
(LIST 'SNMP::COMMON-PDU)
:FUNCTION
#'(LAMBDA (MOP::ARGS MOP::NEXT-EMFUN)
(DECLARE (IGNORE MOP::NEXT-EMFUN))
(LET ((SNMP::PDU (%CAR MOP::ARGS)))
(DECLARE (IGNORABLE SNMP::PDU))
(DECLARE (IGNORABLE SNMP::PDU))
(BLOCK SNMP::GENERATE-REQUEST-ID
(WITH-SLOTS (SNMP::REQUEST-ID-COUNTER)
SNMP::PDU
(THE (UNSIGNED-BYTE 32)
(LOGAND (PORTABLE-THREADS:ATOMIC-INCF SNMP::REQUEST-ID-COUNTER)
4294967295))))))
:FAST-FUNCTION
#'(LAMBDA (SNMP::PDU)
(DECLARE (IGNORABLE SNMP::PDU))
(BLOCK SNMP::GENERATE-REQUEST-ID
(WITH-SLOTS (SNMP::REQUEST-ID-COUNTER)
SNMP::PDU
(THE (UNSIGNED-BYTE 32)
(LOGAND (PORTABLE-THREADS:ATOMIC-INCF SNMP::REQUEST-ID-COUNTER)
4294967295))))))
:FUNCTION)
7: (SYSTEM::CONVERT-ENSURE-METHOD
(MOP::ENSURE-METHOD 'SNMP::GENERATE-REQUEST-ID
:LAMBDA-LIST
'(SNMP::PDU)
:QUALIFIERS
'NIL
:SPECIALIZERS
(LIST 'SNMP::COMMON-PDU)
:FUNCTION
#'(LAMBDA (MOP::ARGS MOP::NEXT-EMFUN)
(DECLARE (IGNORE MOP::NEXT-EMFUN))
(LET ((SNMP::PDU (%CAR MOP::ARGS)))
(DECLARE (IGNORABLE SNMP::PDU))
(DECLARE (IGNORABLE SNMP::PDU))
(BLOCK SNMP::GENERATE-REQUEST-ID
(WITH-SLOTS (SNMP::REQUEST-ID-COUNTER)
SNMP::PDU
(THE (UNSIGNED-BYTE 32)
(LOGAND (PORTABLE-THREADS:ATOMIC-INCF SNMP::REQUEST-ID-COUNTER)
4294967295))))))
:FAST-FUNCTION
#'(LAMBDA (SNMP::PDU)
(DECLARE (IGNORABLE SNMP::PDU))
(BLOCK SNMP::GENERATE-REQUEST-ID
(WITH-SLOTS (SNMP::REQUEST-ID-COUNTER)
SNMP::PDU
(THE (UNSIGNED-BYTE 32)
(LOGAND (PORTABLE-THREADS:ATOMIC-INCF SNMP::REQUEST-ID-COUNTER)
4294967295)))))))
I found my program have some CLOS code which could get the weakness of ABCL ...
It's cl-net-snmp [1], which I just release a whole new version few days ago. My goal on ABCL is to make sure the server-side version (a pure Lisp SNMP Agent) run as a separated thread in JVM, so that people can use my program to remotely monitor any Java (or ABCL) servers. (I know some ABCL people are fixing bordeaux-threads, I'm watching this work and hope it could be done soon)
Now I need help. If one could spend 5 minutes do a SVN checkout of the release branch:
https://cl-net-snmp.svn.sourceforge.net/svnroot/cl-net-snmp/snmp/branches/6
and try to ASDF load it (you'll need usocket 0.5 and ironclad), two major CLOS bug of ABCL will show up, one is at "pdu.lisp", as what the mail title said, The value :LONG is not of type (MEMBER NIL :BOOLEAN).
I have no idea how to fix it.
Regards,
Chun Tian (binghe)
[1] http://common-lisp.net/project/cl-net-snmp/snmp.html
Below are the error outputs when compiling a lisp file from cl-net-snmp:
#<THREAD "interpreter" {24CCF86}>: Debugger invoked on condition of type TYPE-ERROR
The value :LONG is not of type (MEMBER NIL :BOOLEAN).
Restarts:
0: TRY-RECOMPILING Try recompiling pdu
1: RETRY Retry compiling component ("snmp" "pdu").
2: ACCEPT Continue, treating compiling component ("snmp" "pdu") as having been successful.
3: TOP-LEVEL Return to top level.
[1] SNMP(2): :bt
0: (SYSTEM:BACKTRACE)
1: (INVOKE-DEBUGGER #<TYPE-ERROR {6BA52C90}>)
2: (JVM::COMPILE-FORM #<JVM::LET/LET*-NODE {2910D926}> JVM::STACK :LONG)
3: (JVM:COMPILE-DEFUN
NIL
(LAMBDA (MOP::ARGS MOP::NEXT-EMFUN)
(DECLARE (IGNORE MOP::NEXT-EMFUN))
(LET ((SNMP::PDU (%CAR MOP::ARGS)))
(DECLARE (IGNORABLE SNMP::PDU))
(DECLARE (IGNORABLE SNMP::PDU))
(BLOCK SNMP::GENERATE-REQUEST-ID
(WITH-SLOTS (SNMP::REQUEST-ID-COUNTER)
SNMP::PDU
(THE (UNSIGNED-BYTE 32)
(LOGAND (PORTABLE-THREADS:ATOMIC-INCF SNMP::REQUEST-ID-COUNTER)
4294967295))))))
NIL
"/Users/binghe/.cache/common-lisp/abcl-0.26.0-dev-svn-13251-fasl37-macosx-java/Users/binghe/Lisp/packages/snmp/ASDF_TMP_pdu_6.cls"
#<FILE-STREAM {6539DEFE}>
NIL)
4: (#<FUNCTION {753896F2}>)
5: (JRUN-EXCEPTION-PROTECTED #<FUNCTION {753896F2}>)
6: (SYSTEM::C-E-M-1
(MOP::ENSURE-METHOD 'SNMP::GENERATE-REQUEST-ID
:LAMBDA-LIST
'(SNMP::PDU)
:QUALIFIERS
'NIL
:SPECIALIZERS
(LIST 'SNMP::COMMON-PDU)
:FUNCTION
#'(LAMBDA (MOP::ARGS MOP::NEXT-EMFUN)
(DECLARE (IGNORE MOP::NEXT-EMFUN))
(LET ((SNMP::PDU (%CAR MOP::ARGS)))
(DECLARE (IGNORABLE SNMP::PDU))
(DECLARE (IGNORABLE SNMP::PDU))
(BLOCK SNMP::GENERATE-REQUEST-ID
(WITH-SLOTS (SNMP::REQUEST-ID-COUNTER)
SNMP::PDU
(THE (UNSIGNED-BYTE 32)
(LOGAND (PORTABLE-THREADS:ATOMIC-INCF SNMP::REQUEST-ID-COUNTER)
4294967295))))))
:FAST-FUNCTION
#'(LAMBDA (SNMP::PDU)
(DECLARE (IGNORABLE SNMP::PDU))
(BLOCK SNMP::GENERATE-REQUEST-ID
(WITH-SLOTS (SNMP::REQUEST-ID-COUNTER)
SNMP::PDU
(THE (UNSIGNED-BYTE 32)
(LOGAND (PORTABLE-THREADS:ATOMIC-INCF SNMP::REQUEST-ID-COUNTER)
4294967295))))))
:FUNCTION)
7: (SYSTEM::CONVERT-ENSURE-METHOD
(MOP::ENSURE-METHOD 'SNMP::GENERATE-REQUEST-ID
:LAMBDA-LIST
'(SNMP::PDU)
:QUALIFIERS
'NIL
:SPECIALIZERS
(LIST 'SNMP::COMMON-PDU)
:FUNCTION
#'(LAMBDA (MOP::ARGS MOP::NEXT-EMFUN)
(DECLARE (IGNORE MOP::NEXT-EMFUN))
(LET ((SNMP::PDU (%CAR MOP::ARGS)))
(DECLARE (IGNORABLE SNMP::PDU))
(DECLARE (IGNORABLE SNMP::PDU))
(BLOCK SNMP::GENERATE-REQUEST-ID
(WITH-SLOTS (SNMP::REQUEST-ID-COUNTER)
SNMP::PDU
(THE (UNSIGNED-BYTE 32)
(LOGAND (PORTABLE-THREADS:ATOMIC-INCF SNMP::REQUEST-ID-COUNTER)
4294967295))))))
:FAST-FUNCTION
#'(LAMBDA (SNMP::PDU)
(DECLARE (IGNORABLE SNMP::PDU))
(BLOCK SNMP::GENERATE-REQUEST-ID
(WITH-SLOTS (SNMP::REQUEST-ID-COUNTER)
SNMP::PDU
(THE (UNSIGNED-BYTE 32)
(LOGAND (PORTABLE-THREADS:ATOMIC-INCF SNMP::REQUEST-ID-COUNTER)
4294967295)))))))