freenode/#clasp - IRC Chatlog
Search
15:04:00
pfdietz
Speeding up LLVM fixpoint analysis by up to 90x using GPUs: https://www2.cs.fau.de/publication/download/cc19_parcan_blass.pdf
15:13:02
selwyn
Concerning GPUs - I am trying to get https://github.com/3b/cl-vulkan to work on Clasp
15:18:57
selwyn
It loads fine, but there is an issue relating to CFFI that prevents the example included with the library from working
15:23:09
drmeister
Well - iclasp-boehm is a regular C++ program - you can debug it with lldb as you can any other C++ program.
15:23:27
drmeister
You can build a debug version of clasp - but it's a PITA because it's really slow.
15:23:53
drmeister
So you can turn on debug info for individual functions by prepending their definitions with __attribute__((optnone))
15:25:23
drmeister
The line number tables are usually pretty good - although you will find yourself in inlined code a lot.
15:26:18
drmeister
The debug info for variables is pretty broken for any optimization beyond -O0 - __attribute__((optnone)) will improve the situation for individual functions.
15:26:44
drmeister
Once you compile all of cclasp - you can recompile just iclasp-boehm using ./waf build_iboehm
15:27:08
drmeister
Then you can add and remove __attribute__((optnone)) from functions and recompile just the C++ code and the Common Lisp code will load fine.
15:32:00
selwyn
I do have a backtrace with limited information - https://github.com/clasp-developers/cffi/blob/master/src/strings.lisp#L159 appears in it
15:47:08
selwyn
I will try to get to the bottom of this in my own time but it will take me a while. I suspect that the problem may be in CFFI
15:49:59
drmeister
The failure to attach is not right. You are doing this from slime - that complicates things a bit once you do attach because there are multiple threads.
15:51:37
selwyn
Linux - and I got the same thing when starting from the terminal. will try with gdb now
15:52:21
drmeister
You can debug like this using slime - but I find it's best to set everything up in a script and load it into clasp from the command line.
15:52:57
drmeister
Well, one common lisp thread - the GC has like 8 threads - but they are easily distinguished from the main thread.
15:59:58
drmeister
I'm not trying to solve this for you (where is the fun in that?) - I'm just bringing you up to speed with the quirks of debugging clasp.
16:01:04
drmeister
If you load the example into iclasp-boehm running in the command line you will see everything that is printed.
16:02:49
selwyn
Ah - did not know that. I plan to use Clasp more in the coming weeks, this is all very helpful
16:07:17
selwyn
https://pastebin.com/GAYgRb4R this is as good as I can get it - on the command line I get `there may not be any backtrace available'
16:09:55
drmeister
iclasp-boehm is a C++ executable that loads the compiled common lisp code from a fasl file.
16:11:08
drmeister
So iclasp-boehm can be recompiled separately and if you avoid doing certain things (I can go into detail about that later) you can load the compiled CL fasl without recompiling all of the Common Lisp code.
16:11:54
drmeister
cclasp-boehm is all in one - the C++ and Common Lisp code are linked together. If you recompile the C++ code the build system recompiles some of the CL code and then links it with the C++ object files.
16:12:17
drmeister
For development and especially when I'm making changes to the C++ I use iclasp-boehm.
16:13:02
drmeister
The problem is an assertion failure in foreign-string-to-lisp - probably because :max-chars is 0 and that's not plusp?
16:16:58
drmeister
:max-chars is being passed 0 - that's the problem. I'd look into why the translator for layer-properties doing that.
16:19:03
drmeister
Try macroexpanding the def-translator for layer-properties - that might illuminate why :max-char is being passed with 0
17:49:39
selwyn
drmeister: it seems the translator is given a pointer that points to /0 which causes the subsequent calls to foreign-string-to-lisp to fail. I will continue working on this later. Other Lisp implementations don't have this problem
17:51:13
drmeister
Perhaps clasp is initializing a string to \0 and it should be filling it with spaces or something like that.
17:58:15
drmeister
Hmmm, alright wise-guy - you pull something reasonable out of thin air after thinking about it for 100 nanoseconds. :-)
18:00:23
drmeister
I'm generalizing the FEP code so that we can set up amber jobs with a nice functional interface.