Hi all Cells-users:
It is the first time I get a
Current DP 1 not GE pulse 4 of cell (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL> [Condition of type SIMPLE-ERROR]
error. This code throws the error:
(defun c-pulse-update (c key) (declare (ignorable key)) (unless (find key '(:valid-uninfluenced)) (trc nil "!!!!!!! c-pulse-update updating !!!!!!!!!!" *data-pulse- id* c key :prior-pulse (c-pulse c))) (assert (>= *data-pulse-id* (c-pulse c)) () "Current DP ~a not GE pulse ~a of cell ~a" *data-pulse-id* (c- pulse c) c) (setf (c-pulse c) *data-pulse-id*))
Backtrace: 0: (ERROR "Current DP ~a not GE pulse ~a of cell ~a" 1 4 (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL>) 1: (CELLS::C-PULSE-UPDATE (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL> :VALID-UNINFLUENCED) Locals: CELLS::C = (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL> CELLS::KEY = :VALID-UNINFLUENCED CELLS::C = (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL> #:|g38499| = #(0 NIL ..) 2: (CELLS::ENSURE-VALUE-IS-CURRENT (NIL . <vld>)<4:A ASCENDER/ HELVETICA = NIL> :C-READ NIL) 3: ((:INTERNAL CELLS::CELL-READ 0) NIL NIL) 4: (CELLS::CALL-WITH-INTEGRITY NIL NIL #<Closure (:INTERNAL CELLS::CELL-READ 0) @ #x10e6b8da> NIL) 5: (CELLS::CELL-READ (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL>) 6: (CELLS::MD-SLOT-VALUE HELVETICA CNX::ASCENDER) 7: ((METHOD CNX::ASCENDER (CNX::CELLO-FONT)) HELVETICA) 8: ((METHOD CNX::FONT-ASCENDER (CNX::CELLO-CONTROL)) FRGO-TEXT-1) Locals: CELLS:SELF = FRGO-TEXT-1 9: ((:INTERNAL (MOP:CLASS-DEFAULT-INITARGS CNX::CNX-TEXT :LT) 0) dirty<0:A LT/FRGO-TEXT-1 = NIL>) 10: (CELLS::CALCULATE-AND-LINK dirty<0:A LT/FRGO-TEXT-1 = NIL>) 11: ((FLET CELLS::CALCULATE-AND-SET CELLS::BODY)) 12: (CELLS::CALCULATE-AND-SET dirty<0:A LT/FRGO-TEXT-1 = NIL> :FN- AWAKEN-CELL NIL) 13: ((METHOD CELLS::AWAKEN-CELL (CELLS::C-RULED)) dirty<0:A LT/FRGO- TEXT-1 = NIL>) 14: ((METHOD CELLS:MD-AWAKEN (CELLS::MODEL-OBJECT)) FRGO-TEXT-1) 15: ((METHOD CELLS:MD-AWAKEN :AROUND (CELLS::MODEL-OBJECT)) FRGO- TEXT-1) 16: ((:INTERNAL (:EFFECTIVE-METHOD 1 NIL NIL T T) 0) FRGO-TEXT-1) 17: ((:INTERNAL (:INTERNAL (METHOD SHARED-INITIALIZE :AFTER #) 0) 0) :AWAKEN FRGO-TEXT-1) 18: (CELLS::JUST-DO-IT :AWAKEN) 19: (CELLS::FINISH-BUSINESS) 20: ((FLET CELLS::CALL-WITH-INTEGRITY CELLS::GO-GO)) 21: (CELLS::CALL-WITH-INTEGRITY NIL NIL #<Closure (:INTERNAL CTK:: %RUN-WINDOW 0) [CELLO-NX-TEST-MAIN-WINDOW] @ #x10dd0fea> NIL) 22: (CTK::%RUN-WINDOW) 23: (CTK::%DO-RUN-WINDOW) 24: (CTK:RUN-WINDOW CNX-TEST::CELLO-NX-TEST-MAIN-WINDOW) 25: (CNX-TEST:TEST-MAIN)
Now - questions I have are:
What does :valid-uninfluenced actually mean? Is the code above correct or should the assertion be inside the (unless ...) form? What is the logic behind?
Thanks for helping ...
Cheers Frank
-- Frank Goenninger
Cell: +49 175 4321058 E-Mail: frgo@me.com
Frank Goenninger wrote:
Hi all Cells-users:
It is the first time I get a
Current DP 1 not GE pulse 4 of cell (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL> [Condition of type SIMPLE-ERROR]
error. This code throws the error:
(defun c-pulse-update (c key) (declare (ignorable key)) (unless (find key '(:valid-uninfluenced)) (trc nil "!!!!!!! c-pulse-update updating !!!!!!!!!!" *data-pulse- id* c key :prior-pulse (c-pulse c))) (assert (>= *data-pulse-id* (c-pulse c)) () "Current DP ~a not GE pulse ~a of cell ~a" *data-pulse-id* (c- pulse c) c) (setf (c-pulse c) *data-pulse-id*))
Backtrace: 0: (ERROR "Current DP ~a not GE pulse ~a of cell ~a" 1 4 (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL>) 1: (CELLS::C-PULSE-UPDATE (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL> :VALID-UNINFLUENCED) Locals: CELLS::C = (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL> CELLS::KEY = :VALID-UNINFLUENCED CELLS::C = (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL> #:|g38499| = #(0 NIL ..) 2: (CELLS::ENSURE-VALUE-IS-CURRENT (NIL . <vld>)<4:A ASCENDER/ HELVETICA = NIL> :C-READ NIL) 3: ((:INTERNAL CELLS::CELL-READ 0) NIL NIL) 4: (CELLS::CALL-WITH-INTEGRITY NIL NIL #<Closure (:INTERNAL CELLS::CELL-READ 0) @ #x10e6b8da> NIL) 5: (CELLS::CELL-READ (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL>) 6: (CELLS::MD-SLOT-VALUE HELVETICA CNX::ASCENDER) 7: ((METHOD CNX::ASCENDER (CNX::CELLO-FONT)) HELVETICA) 8: ((METHOD CNX::FONT-ASCENDER (CNX::CELLO-CONTROL)) FRGO-TEXT-1) Locals: CELLS:SELF = FRGO-TEXT-1 9: ((:INTERNAL (MOP:CLASS-DEFAULT-INITARGS CNX::CNX-TEXT :LT) 0) dirty<0:A LT/FRGO-TEXT-1 = NIL>) 10: (CELLS::CALCULATE-AND-LINK dirty<0:A LT/FRGO-TEXT-1 = NIL>) 11: ((FLET CELLS::CALCULATE-AND-SET CELLS::BODY)) 12: (CELLS::CALCULATE-AND-SET dirty<0:A LT/FRGO-TEXT-1 = NIL> :FN- AWAKEN-CELL NIL) 13: ((METHOD CELLS::AWAKEN-CELL (CELLS::C-RULED)) dirty<0:A LT/FRGO- TEXT-1 = NIL>) 14: ((METHOD CELLS:MD-AWAKEN (CELLS::MODEL-OBJECT)) FRGO-TEXT-1) 15: ((METHOD CELLS:MD-AWAKEN :AROUND (CELLS::MODEL-OBJECT)) FRGO- TEXT-1) 16: ((:INTERNAL (:EFFECTIVE-METHOD 1 NIL NIL T T) 0) FRGO-TEXT-1) 17: ((:INTERNAL (:INTERNAL (METHOD SHARED-INITIALIZE :AFTER #) 0) 0) :AWAKEN FRGO-TEXT-1) 18: (CELLS::JUST-DO-IT :AWAKEN) 19: (CELLS::FINISH-BUSINESS) 20: ((FLET CELLS::CALL-WITH-INTEGRITY CELLS::GO-GO)) 21: (CELLS::CALL-WITH-INTEGRITY NIL NIL #<Closure (:INTERNAL CTK:: %RUN-WINDOW 0) [CELLO-NX-TEST-MAIN-WINDOW] @ #x10dd0fea> NIL) 22: (CTK::%RUN-WINDOW) 23: (CTK::%DO-RUN-WINDOW) 24: (CTK:RUN-WINDOW CNX-TEST::CELLO-NX-TEST-MAIN-WINDOW) 25: (CNX-TEST:TEST-MAIN)
Now - questions I have are:
What does :valid-uninfluenced actually mean?
When cell X changes, another cell C becomes current with that change aka valid one of two ways: cell C gets recalculated, or the cells engine determines C does not depend directly or indirectly on X. The latter case is "valid and uninfluenced".
Is the code above correct
Yes.
or should the assertion be inside the (unless ...) form? What is the logic behind?
The logic is that it is impossible for a cell pulse to get ahead of *data-pulse-id* without something being broken in the Cells engine, so the engine yells if it sees that.
I have encountered this myself, and it is indeed rare. It arose because I had a model instance lying around from a previous iteration. I forget /exactly/ how I did that, but it was trickier than just doing something silly like use a global variable to hold onto some data. ie, It might take some digging to figure out how an old instance is still in play. Wish I could remember the deets.
kt
Kenneth Tilton wrote:
Frank Goenninger wrote:
Hi all Cells-users:
It is the first time I get a
Current DP 1 not GE pulse 4 of cell (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL> [Condition of type SIMPLE-ERROR]
error. This code throws the error:
(defun c-pulse-update (c key) (declare (ignorable key)) (unless (find key '(:valid-uninfluenced)) (trc nil "!!!!!!! c-pulse-update updating !!!!!!!!!!" *data-pulse- id* c key :prior-pulse (c-pulse c))) (assert (>= *data-pulse-id* (c-pulse c)) () "Current DP ~a not GE pulse ~a of cell ~a" *data-pulse-id* (c- pulse c) c) (setf (c-pulse c) *data-pulse-id*))
Backtrace: 0: (ERROR "Current DP ~a not GE pulse ~a of cell ~a" 1 4 (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL>) 1: (CELLS::C-PULSE-UPDATE (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL> :VALID-UNINFLUENCED) Locals: CELLS::C = (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL> CELLS::KEY = :VALID-UNINFLUENCED CELLS::C = (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL> #:|g38499| = #(0 NIL ..) 2: (CELLS::ENSURE-VALUE-IS-CURRENT (NIL . <vld>)<4:A ASCENDER/ HELVETICA = NIL> :C-READ NIL) 3: ((:INTERNAL CELLS::CELL-READ 0) NIL NIL) 4: (CELLS::CALL-WITH-INTEGRITY NIL NIL #<Closure (:INTERNAL CELLS::CELL-READ 0) @ #x10e6b8da> NIL) 5: (CELLS::CELL-READ (NIL . <vld>)<4:A ASCENDER/HELVETICA = NIL>) 6: (CELLS::MD-SLOT-VALUE HELVETICA CNX::ASCENDER) 7: ((METHOD CNX::ASCENDER (CNX::CELLO-FONT)) HELVETICA) 8: ((METHOD CNX::FONT-ASCENDER (CNX::CELLO-CONTROL)) FRGO-TEXT-1) Locals: CELLS:SELF = FRGO-TEXT-1 9: ((:INTERNAL (MOP:CLASS-DEFAULT-INITARGS CNX::CNX-TEXT :LT) 0) dirty<0:A LT/FRGO-TEXT-1 = NIL>) 10: (CELLS::CALCULATE-AND-LINK dirty<0:A LT/FRGO-TEXT-1 = NIL>) 11: ((FLET CELLS::CALCULATE-AND-SET CELLS::BODY)) 12: (CELLS::CALCULATE-AND-SET dirty<0:A LT/FRGO-TEXT-1 = NIL> :FN- AWAKEN-CELL NIL) 13: ((METHOD CELLS::AWAKEN-CELL (CELLS::C-RULED)) dirty<0:A LT/FRGO- TEXT-1 = NIL>) 14: ((METHOD CELLS:MD-AWAKEN (CELLS::MODEL-OBJECT)) FRGO-TEXT-1) 15: ((METHOD CELLS:MD-AWAKEN :AROUND (CELLS::MODEL-OBJECT)) FRGO- TEXT-1) 16: ((:INTERNAL (:EFFECTIVE-METHOD 1 NIL NIL T T) 0) FRGO-TEXT-1) 17: ((:INTERNAL (:INTERNAL (METHOD SHARED-INITIALIZE :AFTER #) 0) 0) :AWAKEN FRGO-TEXT-1) 18: (CELLS::JUST-DO-IT :AWAKEN) 19: (CELLS::FINISH-BUSINESS) 20: ((FLET CELLS::CALL-WITH-INTEGRITY CELLS::GO-GO)) 21: (CELLS::CALL-WITH-INTEGRITY NIL NIL #<Closure (:INTERNAL CTK:: %RUN-WINDOW 0) [CELLO-NX-TEST-MAIN-WINDOW] @ #x10dd0fea> NIL) 22: (CTK::%RUN-WINDOW) 23: (CTK::%DO-RUN-WINDOW) 24: (CTK:RUN-WINDOW CNX-TEST::CELLO-NX-TEST-MAIN-WINDOW) 25: (CNX-TEST:TEST-MAIN)
Now - questions I have are:
What does :valid-uninfluenced actually mean?
When cell X changes, another cell C becomes current with that change aka valid one of two ways: cell C gets recalculated, or the cells engine determines C does not depend directly or indirectly on X. The latter case is "valid and uninfluenced".
Is the code above correct
Yes.
or should the assertion be inside the (unless ...) form? What is the logic behind?
The logic is that it is impossible for a cell pulse to get ahead of *data-pulse-id* without something being broken in the Cells engine, so the engine yells if it sees that.
I have encountered this myself, and it is indeed rare. It arose because I had a model instance lying around from a previous iteration.
Sorry, I forgot to explain. By "iteration" I mean the test iteration/application run that begins with cells-reset. So I would test some stuff, make some changes, and tkick off another test. cells-reset runs dropping the pulse to 1, but then some old instance from the prior test comes into play.
kt
I forget /exactly/ how I did that, but it was trickier than just doing something silly like use a global variable to hold onto some data. ie, It might take some digging to figure out how an old instance is still in play. Wish I could remember the deets.
kt
cells-devel site list cells-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/cells-devel
No virus found in this incoming message. Checked by AVG - www.avg.com Version: 8.5.375 / Virus Database: 270.12.93/2206 - Release Date: 06/27/09 17:55:00
Hi Kenny,
Am 29.06.2009 um 15:41 schrieb Kenneth Tilton:
Sorry, I forgot to explain. By "iteration" I mean the test iteration/ application run that begins with cells-reset. So I would test some stuff, make some changes, and tkick off another test. cells-reset runs dropping the pulse to 1, but then some old instance from the prior test comes into play.
Yep, that's clear. Except that this happens to me right during the first run after a fresh lisp image start!
At a loss, really. - How to debug this ???
Thanks
Frank
-- Frank Goenninger
Cell: +49 175 4321058 E-Mail: frgo@me.com
Frank Goenninger wrote:
Hi Kenny,
Am 29.06.2009 um 15:41 schrieb Kenneth Tilton:
Sorry, I forgot to explain. By "iteration" I mean the test iteration/ application run that begins with cells-reset. So I would test some stuff, make some changes, and tkick off another test. cells-reset runs dropping the pulse to 1, but then some old instance from the prior test comes into play.
Yep, that's clear. Except that this happens to me right during the first run after a fresh lisp image start!
At a loss, really. - How to debug this ???
I notice the pulse was pretty damn low, 1 in the clock vs 4 in the cell. Lotsa print statements should do it since I doubt the volume will be unmanageable.
My guess, btw, is that you have a call to cells-reset someplace you thought would be safe and now that is getting called downstream from an earlier reset and after some work is done.
kt