freenode/#clasp - IRC Chatlog
Search
10:43:11
kpoeck
;; If allocate-instance is nonetheless somehow called on an unfinalized class, ;; class-size (also computed during finalization) will be unbound and error
10:45:16
kpoeck
-> The slot CLOS::SIZE in the object #<The STANDARD-CLASS COMMON-LISP-USER::FOO> is unbound.
10:48:47
kpoeck
Is clim here using clos according to the spec (so issue in clasp) or do I need to reorder code in clim-basic/protocol-classes.lisp to not use a forward-reference class?
10:58:51
kpoeck
Locally I fixed the 2 forward-references in clim-basic/protocol-classes.lisp and i compiles now in clasp
11:08:16
kpoeck
The slot CLOS::SIZE in the object #<The STANDARD-CLASS CLIM:STANDARD-EXTENDED-OUTPUT-STREAM> is unbound.
11:11:24
jackdaniel
kpoeck: if it is due to initialize-instance, hack for now locally define-protocol-class
11:11:52
jackdaniel
it won't break anything, because it is meant to formit making instances of protocol classes
11:29:52
kpoeck
Now I can make my first pr for mcclim: get-environment-variable is not defined for clasp
12:33:54
kpoeck
Looking at the code for get-environment-variable and UIOP:GETENV it seems reasonable to use the latter
12:46:53
jackdaniel
it causes problems with deployment, upgrade and so many other things (first-hand experience), nevermind its size, bugs and overall "design" picture
12:51:00
Colleen
karlosz: Bike said at 2018.08.19 14:29:32: i think create-cell in the fucntion body should be okay. fetch wouldn't be, but i don't think you changed that.
12:51:00
Colleen
karlosz: Bike said at 2018.08.20 17:09:56: i think i was mistaken about my i32 problem being caused by your code - sorry for misleading you. I'm trying differently now and I hit a problem with RUI. i'm looking at your code and i think it defaults to removing everything? this is a problem for other branch instructions with no outputs
12:51:00
Colleen
karlosz: Bike said at 2018.08.20 17:34:38: i changed the eq-instruction method to two-successors-mixin, just as a default nil. seems to do it
12:51:00
Colleen
karlosz: Bike said at 2018.08.20 18:06:46: hit "No applicable method for CLEAVIR-HIR-TRANSFORMATIONS:PARENTS with arguments of types FUNCTION-DAG" while compiling clasp's sys::destructure. you can see it in lsp/defmacro.lsp, it's a complicated one with local special bindings and functions and such.
13:01:48
karlosz
::notify Bike: okay, that seems like a way more tractable problem. so it gets farther and past the i32 to that error now?
13:29:45
Bike
::notify karlosz the i32 problem is probably nothing that's related to your work. just forget about it
14:09:21
drmeister
Hello - I feel like I'm finally getting some kind of control of the Javascript end of Cando's user interface.
14:58:49
drmeister
Is it valid to have a #\Return in a simple-base-string - what should happen when it runs through a UTF8 encoder?
15:17:08
drmeister
Then I need to think through the various levels of JSON, UTF8 encoding and decoding to figure out why zeromq is crashing on the Python side.
15:18:08
Bike
maybe some lingering stringism in the cl-jupyter code treats \r as breaking up messages?
15:19:01
kpoeck
Latest: Condition of type: SIMPLE-ERROR No adequate specialization of MAKE-LOAD-FORM for an object of type SIMPLE-BASE-STRING
15:19:51
kpoeck
Coming from (LOAD-TIME-REFERENCE-LITERAL "Delete the object before point. With a numeric argument, kills that many objects before (or after, if negative) point." T)
15:25:42
kpoeck
https://github.com/McCLIM/McCLIM/blob/master/Libraries/Drei/basic-commands.lisp#L402
15:30:34
drmeister
It is a string and it should have gone here... https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/cmp/cmpliteral.lsp#L296
15:34:01
drmeister
In frame 19 - there is a single quote in front of the double quote - what is up with that?
15:56:47
drmeister
I think it you move the cursor to the frame and use 'e' and then evaluate cl-user::arg0, cl-user::arg1 and so on - you will get the arguments in that frame.
15:59:15
drmeister
When I said "this isn't the Altair switch flipping age anymore" I should have added "we aren't far past the Altair switch flipping age - but we are a bit more advanced than that".
16:39:47
drmeister
If you generate the error from clasp run in the shell and you get the backtrace with (core:btcl) you can try...
16:40:30
drmeister
As in (core::bt-argument 10 0) for the zeroth argument of the tenth frame. That might work.
16:41:28
drmeister
Kevslinger: If you use http://0.0.0.0:8888/lab?reset . you can start a clean jupyterlab session.
16:45:34
drmeister
I have a Javascript node/npm/yarn/webpack question that I fully realize may be too system specific for anyone but a handful of people in the world to answer. Are you game?
16:48:08
drmeister
When we build jupyterlab - it downloads and assembles all of this Javascript code from npm and local source directories. When I connect my browser to the jupyterlab server - the jupyterlab application comes up immediately. But then - because of the way I've specified jupyterlab to build - it builds the application AGAIN after I started it up. I think - but I don't know - that it loads it into the browser again. Is such
16:48:08
drmeister
a thing possible (namely load javascript and then build javascript and then load it again in one action)?
16:48:41
drmeister
If you are busy - no problem. I've asked on the jupyterlab google group - but no responses yet.
16:50:09
drmeister
Right - how would I figure that out. Say I'm using chrome - can the developers console tell me what is going on?
16:50:37
Shinmera
The developer console is fairly powerful, but that doesn't make untangling that sort of mess much easier.
16:51:04
Shinmera
I would start by going to the Network tab, recording all activity, and checking what's being transferred back and forth and when
16:51:58
Shinmera
You can also go to the Sources tab and look at all the JS files that are being loaded. You can then set breakpoints at parts that interest you and reload the page. It should then halt at the breakpoint.
16:52:14
drmeister
kpoeck: If you can do that without being clobbered by input - can you put in a few more print statements to see why that string isn't being caught by the (stringp xxx) clause of the cond?
17:13:40
drmeister
There will be the header (8-bytes) the vtable (8-bytes) and then the simple-base-string length and contents.
17:21:23
kpoeck
(core:print-address-of der) ../../src/core/primitives.cc:308 AddressOf = 0x11b695d28 "Delete the object before point. With a numeric argument, kills that many objects before (or after, if negative) point."
17:21:45
kpoeck
(lldb) x/8gx 0x11b695d28 0x11b695d28: 0x000000010f07cce8 0x0000000000000077 0x11b695d38: 0x74206574656c6544 0x63656a626f206568 0x11b695d48: 0x65726f6665622074 0x0a2e746e696f7020 0x11b695d58: 0x6e20612068746957 0x6120636972656d75
17:22:58
kpoeck
(lldb) x/8gx 0x11b695d20 0x11b695d20: 0x0000002500000052 0x000000010f07cce8 0x11b695d30: 0x0000000000000077 0x74206574656c6544 0x11b695d40: 0x63656a626f206568 0x65726f6665622074 0x11b695d50: 0x0a2e746e696f7020 0x6e20612068746957
17:26:35
drmeister
That's not a valid stamp - but it doesn't match what we got from instance-stamp - can you try instance-stamp again: (core:instance-stamp der)
17:27:36
drmeister
I'm just trying to get this to make sense and next I'll tell you how to turn on guards that should catch this earlier.
17:33:01
drmeister
Next I'll ask if you could turn on guards and recompile everything and try again. Guards add a few words to the header and a random number of words to the tail of every object and then there is code that will check the guards. It slows things down a bit but it can catch overwrites and underwrites as long as they don't skip over the guards.
17:36:52
drmeister
Hmmm - another thing, could you look back in memory a bit and dump what is before this? Formulating lldb command...
17:37:45
drmeister
x/8xg 0x11b695c20 then hit enter a few times and past it into https://gist.github.com/
17:38:29
drmeister
The header looks like it's being corrupted - it might be the previous object is being written to and overflowing.
17:39:18
drmeister
What was the verdict yesterday? Does McClim use FFI? Is there any way for it to do unsafe behavior?
17:45:27
kpoeck
So I added clasp as abcl and clisp in this commit: https://github.com/slyrus/opticl/commit/b64d91ce69a287d4453fc20f9261b99f808a58bc
17:46:56
kpoeck
Better said I took latest opticl and treated clasp like abcl and clisp, so that static-vectors are not used
17:56:51
drmeister
This looks like the start of the previous object: 0x11b695c80: 0x00000000000003e1 0x000000010f0780c0
17:57:44
drmeister
kpoeck: Could you open your clasp/build/boehm/generated/initClassesAndMethods_inc.h file?
17:58:50
drmeister
That is the definition for stamp 258 (decimal) which corresponds to the header value 0x3e1
18:01:22
drmeister
Hmmm, that is the second thing that doesn't make sense. The bad header value doesn't match what I expect and I expected this to be a simple-character-string or some kind of simple 32bit value array.
18:03:29
drmeister
I'm taking a slightly different tact now - I'm checking what the bytes after the bad header contain - I need to translate this...
18:12:30
drmeister
Because that's the string in this macro... https://www.irccloud.com/pastebin/raw/zHF0Utf1
18:13:49
drmeister
Well, even though two important things (header value of this object and the one prior to it) don't make sense - it looks like there is a write past the end of the previous object.
18:15:59
drmeister
The preceding object ___looks___ like a simple-character-string - I'm translating the bytes into characters to see if that makes sense.
18:22:36
drmeister
When you look at objects in memory once this is compiled you will see bigger headers and tails on objects full of 0xCC - it will be very clear where objects start and stop.
18:23:07
kpoeck
I basically do (ql:quickload "mcclim"), but I have local changes to optcl and mcclim (clasp didn't like forward referenced classes too much)
18:26:24
drmeister
Yes on ./waf distclean configure build_cboehm with the new setting in wscript.config
20:00:40
drmeister
Which it must - because the jupyterlab output is mimicking a simple TTY using carriage returns to jump to the beginning of the line but not advance to the next line.
20:01:02
drmeister
Now I can have nice text based progress bars that work across the web or in a terminal.
20:54:15
freemint
drmeister , can you give me a brief state of the union/project? or point me to something
20:56:36
drmeister
Build time is 30 min on a modern computer. Almost all ansi tests passing (kpoeck can give more details).
21:00:02
freemint
1. to learn new stuff 2. ZFS is cool 3. Solaris has very good and fast isolation primitives
21:03:28
drmeister
Well, we aren't going to be supporting sun OS - there are only so many hours in the day.
21:04:49
drmeister
cracauer ported clasp to freeBSD in a couple of days - mostly so we could use dtrace on a non-macOS.
21:07:08
freemint
i will give a 5 minute lightning talk on the froscon about my favorite lisp dialect
21:10:17
drmeister
I'm enjoying myself - being finally able to program in my jupyterlab/slime development environment. It's awesome after weeks of low level programming and messing around with Python and Javascript package management.
21:11:09
freemint
everything stems from a single datastructure which i used to represented no bounded integers, symbols and lists
21:14:57
freemint
drmeister, computing speed and grant money maybe the bottlenecks in your field, but in other fields like web development the bottleneck is developer time
21:17:08
freemint
here something horrific for any compiler writer: in picolisp there are no macros instead everything is an Fexpr
21:18:04
freemint
everything function you call could or could not eval it's arguements and you have no idea what datatypes it expects
21:19:51
freemint
it is not ment for you, but it is very simple to understand. there is litterally an eval-apply pair walking up and down the ast, which is just lists of symbols andd numbers
21:22:44
drmeister
kpoeck: That is an interesting observation - it might be working because it's writing beyond the end of an object into the 0xCC tail but we aren't catching it.
21:24:07
drmeister
I have some other DEBUG flags that check bounds - but I'm not sure how thorough we are - with all the new inlining code that Bike wrote - it's not clear that we honor them yet.
21:25:15
freemint
i might record it ... it is just 5 minutes so ... i try to get the essence of the dynamic nature of picolisp across
21:28:06
kpoeck
I believe (defconstant +foo+ (something that is no eql after loading the fasl)) is non-conforming
21:32:34
drmeister
Another thing we could do - in the MPS build I could add code to walk all of memory and validate every object. At least then we would know if there was a bad object in memory.
21:33:28
drmeister
We can also compile in a lot more validation tests - Bike doesn't know about this yet - I'll ask him about it.
21:34:07
kpoeck
I believe clasp is conformant and clx not, but bike or stassats probably know for sure