Search
Wednesday, 12th of May 2021, 13:47:31 UTC
14:40:32
Bike
drmeister: pushed fixes for the backtrace stuff
14:44:22
Bike
drmeister: except after i rebased upstream i can't build. "Symbol not found: __ZN13imageSaveLoad20global_debugSnapshotE"
17:33:26
drmeister
I'll take a look at that.
17:36:26
drmeister
I just put the extern bool global_debugSnapshot in imageSaveLoad.h file and it has been in imageSaveLoad.cc for a while.
17:36:44
drmeister
I just merged your changes into my repo and I'm building it.
17:37:01
drmeister
Could you pull the latest main and try again?
17:41:16
drmeister
Can you check if you see this:
17:41:23
drmeister
https://github.com/clasp-developers/clasp/blob/main/include/clasp/gctools/imageSaveLoad.h#L17
17:41:33
drmeister
And this: https://github.com/clasp-developers/clasp/blob/main/src/gctools/imageSaveLoad.cc#L135
17:45:31
drmeister
Where does the build fail?
17:47:07
drmeister
Could replicate the following?
17:47:09
drmeister
https://www.irccloud.com/pastebin/uRtiJ2kJ/
17:48:07
Bike
i don't have that file. do i need to be building boehmprecise instead of just boehm?
17:48:23
drmeister
Ah - yes - that's it.
17:48:41
Bike
so ./waf build_cboehmprecise or no?
17:49:20
drmeister
Yes - but I'll fix it for iboehm
18:13:09
drmeister
Did you reduce the different kinds of source locations?
18:13:31
Bike
no, i just put in an adaptor. i could do that instead next
18:20:15
drmeister
https://github.com/slime/slime/blob/master/swank/clasp.lisp#L61
18:20:45
drmeister
The socket bind fails if the port is already allocated - something that happens quite a lot when we use this from jupyterlab.
18:21:42
drmeister
Could we do something more intelligent like automatically try to bind the next port?
18:21:55
drmeister
No other implementation does anything like I suggest.
18:22:43
Bike
that seems like something that should go in higher level code
18:23:00
Bike
it might confuse slime if it requests to use one port but gets a socket on another
18:24:27
drmeister
Lower in the call stack it uses this: https://github.com/slime/slime/blob/master/swank.lisp#L746
18:24:44
drmeister
socket-quest looks like it scans for an available port
18:25:16
drmeister
Is that a restart that we could use in our code?
18:25:20
Bike
and you can use the use-value restart to specify one, too
18:26:33
drmeister
The restart-loop means it will keep trying as long as we signal the use-value restart until it finds a port (incrementing the port number) or there is an error?
18:27:34
drmeister
I haven't had the chance to use restarts much - what would that look like around the (sb-bsd-sockets:socket-bind socket (resolve-hostname host) port)
18:28:23
drmeister
https://www.irccloud.com/pastebin/Jq08SG6A/
18:29:13
Bike
(handler-bind ((address-in-use-error (lambda (e) (use-value whatever)))) ...code that calls socket-quest...)
18:29:47
Bike
or (use-value whatever e), i guess, doesn't matter much
18:31:47
drmeister
I wrote this without reading what you said - I'll paste it and compare.
18:31:48
drmeister
https://www.irccloud.com/pastebin/QmqJ5TGI/
18:32:39
drmeister
You recommend handler-bind rather than handler-case - is yours more appropriate?
18:32:57
Bike
yeah, you can't use handler-case. with handler-case the stack is unwound when it hits the handler, so you can't restart
18:33:21
Bike
and use-value is a standard symbol, so you can just do (invoke-restart 'use-value)
18:34:42
drmeister
https://www.irccloud.com/pastebin/cK6UH1xu/
18:35:19
Bike
that still has handler-case?
18:35:24
Bike
i gues syou should declare err ignore, too
18:35:38
drmeister
Yeah - I forgot to change that.
18:35:44
Bike
oh, and to do like an actual scan, you might need to invoke the restart in a loop
18:36:12
drmeister
I think swank does that.
18:36:12
drmeister
https://github.com/slime/slime/blob/master/swank.lisp#L747
18:38:31
Bike
yeah, you don't need to loop, my bad
18:55:59
drmeister
It works - it scans for the next available port.
18:56:14
drmeister
One less annoying thing in my life.
19:12:51
Bike
in order to let source positions have nullable fields i'd probably have to update swank again. that's annoying
19:25:44
drmeister
I have an update for swank now.
19:25:49
drmeister
I haven't submitted it yet.
19:26:15
drmeister
Bike - does this mean anything to you? We updated quickclasp (our quicklisp thingy) and tried to rebuild...
19:26:17
drmeister
https://www.irccloud.com/pastebin/fW2oiABd/
19:26:51
Bike
huh... no, i've never seen that one
19:27:07
Bike
or seen anything to do with ql-cdb really
19:28:36
drmeister
It's this function in quicklisp - I've never seen it before...
19:28:36
drmeister
Development/cando-main/
19:28:43
drmeister
https://www.irccloud.com/pastebin/UPUgYzcN/
19:29:35
drmeister
(map nil #'slot (entries bucket)) and bucket value is a (#<global-entry-point>)
19:29:46
drmeister
I'm flushing more and more cache and rebuilding.
19:30:01
Bike
it looks like this is called from write-hash-tables which maps over (buckets cdb-writer), which sounds like something that will not be returning entry points
19:30:05
drmeister
The open question is once we update quickclasp - how much rebuilding do we need to do.
19:30:36
drmeister
Yeah - entry points shouldn't ever make it into the environment - right?
19:31:01
Bike
in particular, the cdb-writer object's buckets are initialized with make-instance 'hash-table-bucket
19:31:07
Bike
so something must be very screwy indeed
19:31:32
drmeister
I'm rebuilding all the common lisp code.
19:38:49
drmeister
There's something wrong.
19:42:26
drmeister
I can start icando-boehm and (load "~/quicklisp/setup.lisp") and then (ql:quickload :cando-jupyter) generates the error.
19:44:37
drmeister
Is there a compiler-macro on MAP?
19:47:31
drmeister
I put a format statement in ql-cbd::bucket-hash-vector and the problem went away.
19:47:42
drmeister
Then I took it out and the problem stays away.
19:47:57
drmeister
Does quicklisp leave compiled files anywhere other than ~/.cache/common-lisp?
19:49:45
drmeister
Ok, now the problem has disappeared.
19:59:02
Bike
i think there is a compiler macro on map,yes
Thursday, 13th of May 2021, 1:47:31 UTC