freenode/#clasp - IRC Chatlog
Search
18:55:19
drmeister
I'm using this bug to familiarize myself with the Undo debugger and I realized that I love my Python extension to lldb to inspect lisp objects and I want it in the Undo debugger.
18:55:36
drmeister
So I'm modifying it so it's portable across lldb, gdb/python3 and gdb/python2 (udb)
18:56:12
drmeister
It only needs the ability to read from memory and print to the display - so I'm wrapping that behavior in an interface class and passing that to my clasp_inspect extension.
18:56:52
drmeister
It's a bit fussy because I have to figure out how to load it into lldb with Python3 and udb, which is still using Python2.7 - dangnabbit.
19:12:26
drmeister
I may need Bike though - the last one that we fixed was due to the compiler being invoked because of an invalidated constructor in static-gf. That's what it looks like now as well.
19:16:55
drmeister
https://github.com/clasp-developers/clasp/commit/76baa9fe8c867a5a79d10993b2dbca2f41de7dc2
19:17:24
drmeister
https://github.com/clasp-developers/clasp/commit/76baa9fe8c867a5a79d10993b2dbca2f41de7dc2
19:23:24
drmeister
It may be that every invocation of 'make-instance at the top level during load time needs to be handled differently.
19:26:31
drmeister
But it seems like when it happens with a build - it keeps happening with that build. Do you feel that way as well?
19:30:11
kpoeck
I keep changing wscript.conf, e.g now added DEBUG_MONITOR to be able to use -f debug-startup, but in my last build it doesn't happen
19:39:20
kpoeck
(when core:*debug-startup* (core:monitor-write (core:bformat nil "startup cclasp-compile* form: %s%N" form)))
19:39:42
drmeister
I see - we are printing messages when core:*debug-startup* is T and doing a compilation.
19:40:10
drmeister
However, these compilations are happening using the bclasp compiler - so it's not triggering this code.
19:41:08
drmeister
I appreciate the heads up. I often forget how this code works even though I wrote it.
19:44:21
drmeister
kpoeck: I'm going to start implementing image save/load for MPS as soon as I get this current problem resolved. I think I figured out how to do it.
19:45:06
drmeister
We have the ability to walk MPS memory and so I can serialize every object to a file.
19:45:25
drmeister
Then I can read the objects back in at startup and fix up all the internal pointers.
19:46:43
drmeister
The multiple entry points will use the approach used by sbcl. Every function call will do a little calculation to figure out what entry point it should use.
19:48:32
drmeister
It will give us back a register argument and it will enable tail-recursion because a function will consist of the body of the function using the fast-call calling convention (that allows tail-recursion) and a collection of ancillary functions for each arity of arguments that call the body of the function.
19:50:19
drmeister
It would be easier to implement this once the llvm JITLink for linux is more mature. I don't control that though.
20:08:13
drmeister
This time in Concrete-Syntax-Tree/Lambda-list/standard-grammars.lisp - it calls generate-grammar and that creates instances at load-time.
20:09:33
drmeister
I'll keep playing whack-a-mole with this until something new happens or I get through startup.
20:11:23
stassats
drmeister: can your time traveling debugger travel to the time before the pandemic?
20:15:00
drmeister
I'm writing a Python extension for gdb and lldb that interrogate lisp objects in memory.
20:54:19
drmeister
https://www.dropbox.com/s/ef9byer6t88c7ip/Screen%20Recording%202020-08-01%20at%204.52.03%20PM.mov?dl=0
20:58:50
drmeister
After making that last change (declare (notinline make-instance)) it is now building through to asdf.
21:05:51
drmeister
I hacked them locally to (declare (notinline make-instance)) and now asdf is building.
21:10:50
drmeister
Yeah - and it seems intermittent but from the compiler side. Like sometimes it compiles code that works but in the last day my experience is it compiles code that tries to invoke bclasp-compile at load-time and then craps out.
21:13:01
drmeister
I'll find out. I added code to print a message when bclasp-compile is invoked during startup.
21:13:35
Bike
make-instance expands into something with a (load-time-value (ensure-constructor-cell ...))
21:15:17
drmeister
Why (declare (notinline make-instance)) then? I know you explained it yesterday but when you did I assumed we did not want (load-time-value (ensure-constructor-cell ...)) at load-time, ever.
21:15:37
Bike
if we didn't ever write it why would i have written it to expand into that in the first place?
21:16:11
Bike
it's just that because of the way we build we have to worry about it trying to evaluate that ensure constructor cell stuff before static-gfs is actually loaded.
21:18:42
drmeister
Ok, but this is happening in Acclimation and Concrete-Syntax-Tree - AFTER static-gfs is loaded. So it should be using the (load-time-value (ensure-constructor-cell ...)) expansion at after static-gfs are loaded and it should work - right?
21:20:38
drmeister
I didn't think I was looking at the right problem - now I know that there type error is related to the real problem and not some mis-compilation.
21:23:56
drmeister
I'm playing with udb and adding my common lisp object inspection extension to it.
21:24:39
Bike
for context, the idea here is to avoid all the overhead of calling the make-instance, initialize-instance, allocate-instance generic functions and checking keywords and stuff, by computing a function tailored to deal with the particular class and keywords at the call site
21:25:13
Bike
this function can't be permanent since the class can be redefined and stuff, so load-time is about as early as we can compute it
21:25:59
drmeister
Understood - and you intended that the compilation of these optimized functions happen at load time - but only after static-gfs is fully loaded.
21:26:47
drmeister
Ok, so I'll remove the changes I made to Acclimation and Concrete-Syntax-Tree and let them crash the way that they were and try to get some info on why they are crashing.
21:28:52
Bike
if we don't get this figured out by monday i'll probably disable it locally so i can focus on bignums
0:45:49
drmeister
This is frustrating. I've built a version of clasp that should fail with this problem but it does not.