Hi, I've attached[1] a small subset of the actual program to reproduce the problem. You'll need cl-fad, cffi, and binomial-heap packages to compile and load the node-access-log-parser.lisp file. After loading the file, just issue below command while in `NALP' package.
(compare-partitionings "/tmp/cffi-foreign-alloc-test/" "/tmp/cffi-foreign-alloc-test/sanitized-logs.out" "/tmp/cffi-foreign-alloc-test/weights.out" 40 16 0.2) Regards. [1] http://www.students.itu.edu.tr/~yazicivo/tmp/cffi-foreign-alloc-test.tar.bz2 On Mon, 07 Sep 2009, Volkan YAZICI <yazic...@ttmail.com> writes: > I use below macro to allocate foreign vectors. > > (defmacro with-foreign-vectors ((&rest bindings) &body body) > "Convenient macro to create foreign vector bindings. `BINDIGS' are of > `(NAME > TYPE INITIAL-CONTENTS)' format." > `(let* ,(loop with val = (gensym) > for (name type initial-contents) in bindings > collect `(,name > (let ((,val ,initial-contents)) > ; (let ((*print-length* 10)) > ; (format *trace-output* "~S => ~D ~S (~A)~%" > ; ',name (when ,val (length ,val)) > ; ,val (find nil ,val))) > (foreign-alloc ,type > :count (length ,val) > :initial-contents ,val)))) > (unwind-protect (progn ,@body) > ,@(mapcar > (lambda (name) `(foreign-free ,name)) > (mapcar #'car bindings))))) > > But while running the program, it throws below error message. (I > experience same situation in both SBCL and CCL.) > > NALP> (compare-partitionings > "/home/vy/bilkent/projects/xml/t/xmark-1024-20091006-1314-small/" > > "/home/vy/bilkent/projects/xml/t/xmark-1024-20091006-1314-small/sanitized-logs.out" > > "/home/vy/bilkent/projects/xml/t/xmark-1024-20091006-1314-small/weights.out" > 40 16 0.2) > N-PTR => 1 #(7536) (NIL) > XADJ-PTR => 7537 #(0 1 3 5 6 8 10 12 14 16 ...) (NIL) > ADJNCY-PTR => 8011 #(1 80 2 5666 3 4 2044 5 2292 6 ...) (NIL) > ; Evaluation aborted. > > ; The value NIL is not of type (SIGNED-BYTE 32). > ; [Condition of type TYPE-ERROR] > ; > ; Restarts: > ; 0: [RETRY] Retry SLIME REPL evaluation request. > ; 1: [ABORT] Return to SLIME's top level. > ; 2: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread" > RUNNING {AA75079}>) > ; > ; Backtrace: > ; 0: (CFFI-SYS:%MEM-SET NIL #.(SB-SYS:INT-SAP #X080C8850) :INT 16620) > ; Locals: > ; CFFI-SYS::OFFSET = 16620 > ; CFFI-SYS::PTR = #.(SB-SYS:INT-SAP #X080C8850) > ; TYPE = :INT > ; CFFI-SYS::VALUE = NIL > ; 1: (FOREIGN-ALLOC :INT)[:EXTERNAL] > ; Locals: > ; SB-DEBUG::ARG-0 = 5 > ; SB-DEBUG::ARG-1 = :INT > ; 2: (METIS-BIPARTITION-GRAPH-FFI #(0 1 3 5 6 8 ...) #(1 80 2 5666 3 4 > ...) #(1 1 1 1 1 1 ...) #(20 7 13 1 19 20 ...) 0.2) > ; Locals: > ; SB-DEBUG::ARG-0 = #(0 1 3 5 6 8 ...) > ; SB-DEBUG::ARG-1 = #(1 80 2 5666 3 4 ...) > ; SB-DEBUG::ARG-2 = #(1 1 1 1 1 1 ...) > ; SB-DEBUG::ARG-3 = #(20 7 13 1 19 20 ...) > ; SB-DEBUG::ARG-4 = 0.2 > > When I look at the printed results, there doesn't appear any `NIL' > values in any of the `:INITIAL-CONTENTS' vectors. But error tells that > one of the `VALUE' arguments passed to `CFFI-SYS:%MEM-SET' is `NIL'. > > Below are some of the detailed macroexpansions related to > `CFFI-SYS:%MEM-SET'. > > (define-mem-accessors > (:char sb-sys:signed-sap-ref-8) > (:unsigned-char sb-sys:sap-ref-8) > (:short sb-sys:signed-sap-ref-16) > (:unsigned-short sb-sys:sap-ref-16) > (:int sb-sys:signed-sap-ref-32) > (:unsigned-int sb-sys:sap-ref-32) > (:long sb-sys:signed-sap-ref-word) > (:unsigned-long sb-sys:sap-ref-word) > (:long-long sb-sys:signed-sap-ref-64) > (:unsigned-long-long sb-sys:sap-ref-64) > (:float sb-sys:sap-ref-single) > (:double sb-sys:sap-ref-double) > (:pointer sb-sys:sap-ref-sap)) > > Which turns into below form if I macroexpand the `DEFINE-MEM-ACCESSORS'. > > ... > (DEFUN %MEM-SET (VALUE PTR TYPE &OPTIONAL (OFFSET 0)) > (ECASE TYPE > (:CHAR (SETF (SB-SYS:SIGNED-SAP-REF-8 PTR OFFSET) VALUE)) > (:UNSIGNED-CHAR (SETF (SB-SYS:SAP-REF-8 PTR OFFSET) VALUE)) > (:SHORT (SETF (SB-SYS:SIGNED-SAP-REF-16 PTR OFFSET) VALUE)) > (:UNSIGNED-SHORT (SETF (SB-SYS:SAP-REF-16 PTR OFFSET) VALUE)) > (:INT (SETF (SB-SYS:SIGNED-SAP-REF-32 PTR OFFSET) VALUE)) > (:UNSIGNED-INT (SETF (SB-SYS:SAP-REF-32 PTR OFFSET) VALUE)) > (:LONG (SETF (SB-SYS:SIGNED-SAP-REF-WORD PTR OFFSET) VALUE)) > (:UNSIGNED-LONG (SETF (SB-SYS:SAP-REF-WORD PTR OFFSET) VALUE)) > (:LONG-LONG (SETF (SB-SYS:SIGNED-SAP-REF-64 PTR OFFSET) VALUE)) > (:UNSIGNED-LONG-LONG (SETF (SB-SYS:SAP-REF-64 PTR OFFSET) VALUE)) > (:FLOAT (SETF (SB-SYS:SAP-REF-SINGLE PTR OFFSET) VALUE)) > (:DOUBLE (SETF (SB-SYS:SAP-REF-DOUBLE PTR OFFSET) VALUE)) > (:POINTER (SETF (SB-SYS:SAP-REF-SAP PTR OFFSET) VALUE)))) > ... > > To be honest, I need some urgent assistance. Any helps will be really > appreciated. _______________________________________________ cffi-devel mailing list cffi-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel