freenode/#clasp - IRC Chatlog
Search
10:00:21
scymtym
drmeister: i can't pinpoint the problem based on what i have seen in the logs. infinite loops in esrap parsers are usually caused by repetition expressions with child expressions that can succeed without consuming input such as (* (? "a")). also, esrap has a tracing facility that could help (esrap:trace-rule 'RULE :recursive t)
11:27:30
drmeister
I'm going to pull another copy of clasp and cando, merge dev into cst and debug this issue in esrap with the help of source tracing and esrap trace.
11:28:13
drmeister
Something broke in the last couple of days and I need to fix it fast - so that we can get this very important demo running for next Thursday.
11:28:33
drmeister
Or by the end of today I have to start regressing to older versions to find one that works.
11:30:03
drmeister
We can't render molecules because that requires parsing sybyl type rules and that requires esrap .
11:32:06
attila_lendvai
drmeister: do you know how to cherry-pick specific commits? maybe for the demos you should stick to the testing branch. create a branch for the demo and cherry pick selected commits if needed...
11:34:27
drmeister
It looks like it's been in the code since at least Monday - but I've been traveling and giving demos. When I tried to demo the development version it locked up - probably this problem.
11:34:47
drmeister
I dropped back to a docker demo but that precluded me from demonstrating some of the latest features.
11:37:01
attila_lendvai
drmeister: maybe for the demos you should stick to the testing branch? create a branch for the demo and cherry pick selected commits if they are needed for the demo (it's simple with gitk as long as there are no line-diff conflicts).
11:37:24
drmeister
The testing branch doesn't let me demonstrate the latest features that I need to demonstrate by next Thursday
11:39:18
drmeister
esrap:parse is a compiler macro - yes. But the problem happens when it invokes the compiled parser.
11:39:45
attila_lendvai
*if* it's one self-contained commit/feature that's needed for the demo, then cherry-picking can be useful to bring that one change over without all the instability of the other new developments.
11:41:34
drmeister
(ESRAP::EXEC-NEGATION #<CLOSURE-WITH-SLOTS@0x11ce34e88 LAMBDA :ftype :FUNCTION lambda-list: NIL :fptr 0x1261ff610> (NOT (OR #\NEWLINE #\PAGE)) "WILDATOM XX C N O S P" 8 21)
11:42:13
drmeister
It's failing - I'm not sure if that should happen or not. Is it looking for #\NEWLINE or #\PAGE in that substring and not finding it?
11:48:05
kpoeck
@bike, i see you might be in more import battles, but I did 2 pr's for 2 of the ansi-issues I reported
12:13:51
heisig
kpoeck: ELS ends typically around 17:30, but followed by the conference dinner and some pub crawl.
12:16:17
scymtym
drmeister: Bicyclidine gave the correct explanation. did you try ESRAP:TRACE-RULE? alternatively, what does (funcall (esrap::compile-expression '(not (or #\newline #\page))) "WILDATOM XX C N O S P" 8 21) return?
12:20:37
drmeister
We added source tracking to clasp over the past couple of months - but it's in a different branch because there was a hit to performance with a change in the cleavir compiler that we wanted to fix.
12:21:15
drmeister
If I had source tracking available to debug this problem I'm pretty sure it would be a lot easier. I'd be able to see source line information on every expression in the backtrace.
12:21:33
drmeister
Without this debugging is very timeconsuming and frustrating. I've spent years doing it.
12:24:54
Bicyclidine
no, we have one system that runs cando, and one with source tracking. you want one that runs cando with source tracking, and that's much dicier.
12:25:22
Bicyclidine
i think regular debugging is the way to go here. it sounds like esrap even has facilities for it.
12:27:24
Bicyclidine
i know you want to show off new features, but if we rush every feature to make some demo they're all going to be broken.
12:30:51
drmeister
Yeah - it's not isolated - but I can do the following to reproduce the problem once cando starts.
12:31:06
drmeister
(esrap:parse 'leap.antechamber-type-definition-parser::wild-atom-line "WILDATOM XX C N O S P")
12:32:16
scymtym
drmeister: did you try (funcall (esrap::compile-expression '(OR #\NEWLINE #\PAGE)) "WILDATOM XX C N O S P" 8 21) ?
12:35:57
drmeister
That "fix" I made to READ is high on my suspect list. I don't see the connection - but it was dealing with whitespace and I can see that it has problems.
12:43:19
drmeister
Why should it return successful-parse? There is no #\NEWLINE or #\PAGE in that substring.
12:44:30
drmeister
Just to be clear - I evaluated: (funcall (esrap::compile-expression '(OR #\NEWLINE #\PAGE)) "WILDATOM XX C N O S P" 8 21)
12:48:07
scymtym
the first result in that paste should be a successful-parse - and was when i tried the same on SBCL
12:48:59
stassats
drmeister: what about (funcall (esrap::compile-expression '(NOT #\NEWLINE)) "WILDATOM XX C N O S P" 8 21) ?
12:49:42
drmeister
(funcall (esrap::compile-expression '(NOT #\NEWLINE)) "WILDATOM XX C N O S P" 8 21) --> #<FAILED-PARSE (NOT #\NEWLINE) @8>
12:50:20
stassats
what about (funcall (esrap::compile-expression '(NOT #\X)) "WILDATOM XX C N O S P" 8 21)?
12:50:36
drmeister
(describe (aref "WILDATOM XX C N O S P" 8)) --> #\ - standard character code: #x20
12:51:18
drmeister
(funcall (esrap::compile-expression '(NOT #\X)) "WILDATOM XX C N O S P" 8 21) --> #<FAILED-PARSE (NOT #\X) @8>
12:52:37
stassats
what about (funcall (esrap::compile-expression '#\Space) "WILDATOM XX C N O S P" 8 21)?
12:55:22
scymtym
ESRAP::EXEC-NEGATION has one use that is at the intersection of structure predicates, structure inheritance and SETF return values. maybe one of those or their interaction is the problem
12:55:33
drmeister
Trying - I need to keep restarting because of a problem with my READ fix that appears when I try to evaluate :r1 from the repl.
13:05:03
scymtym
drmeister: line 11 should show a true return value. the structure is an instance of FAILED-PARSE which includes ERROR-RESULT
13:07:14
stassats
drmeister: and (progn (defstruct foo) (defstruct (bar (:include foo))) (foo-p (make-bar)))
13:08:52
drmeister
(progn (defstruct foo) (defstruct (bar (:include foo))) (foo-p (make-bar))) --> NIL
13:18:11
drmeister
Getting the non-segfaulting subset of the ansi regression tests working in a CI build system has now bubbled to the top of my "todo" list - along with getting the demo together for next week.
13:22:48
Bike
as for why anything works - we don't actually use defstruct without :type, for stupid boot reasons
13:34:48
kpoeck
@bike, in the example with (progn (defstruct foo) (defstruct (bar (:include foo))) (foo-p (make-bar)))
13:39:19
kpoeck
If you redefine (defun make-predicate (name type named name-offset) to do (typep x name) instead of (si::structure-subtypep (type-of x) name)
13:40:13
kpoeck
t.m. (progn (defstruct foo) (defstruct (bar (:include foo))) (foo-p (make-bar))) -> T
13:43:04
Bike
really, the defstruct code does a lot of stuff i'd like to rewrite, but defstruct is annoying to implement and i don't want to just do it myself
13:44:19
Bike
we shouldn't be typing checks inside the accessor functions, for one, it should be an ftype
13:45:29
Bike
and probably the expansion should be rewritten in the first place so it'd not doing all this fset at load time shit
13:45:41
Bike
maybe i'll do that after i fix this and also do the other stuff i was doing to do today
13:48:13
Bike
actually relatedly, we have this (load-time-value (list nil)) song and dance instead of just throwing the class in there, in the constructor i mean
13:48:42
Bike
was there some reason doing it the obvious way didn't work? i guess if it was in there at load time it would look up the class before the defclass is evaluated
14:24:45
Bike
hm, i bet with fastgf, generic function dispatch is faster than how we do typep for classes now, which is subclassp
14:29:02
Bike
meaning it would make sense to instead reduce typep to a generic function call, of course
14:29:16
Bike
really wish we could have the initial state of the discriminator built into the fasl, though
14:39:19
Bike
beach: Several things... we'd need to make sure stamps are the same at compile and load time, for one
15:28:17
Bike
the other thing i broke is allocate-instance (and therefore make-instance) with a derivable-cxx-class
15:30:01
drmeister
Ok - I have a couple of hours now while it rebuilds everything including your new fix (thanks). I'm going to put some time into travis/AWS and regression tests.