freenode/#clasp - IRC Chatlog
Search
12:14:26
rustyv
hi Kevslinger, I hope it's ok to come here and ask some questions pertaining to clasp.. I'm running into some issues that I don't know how to solve
12:16:04
rustyv
I'm trying to get the hello-world interop demo to work and am getting an error when I run 'make test'
12:17:48
rustyv
yes, the build works, but when I run the test, I receive an error stating 'fatal error in llvm: program used external function '_ZTH9my_thread' which could not be resolved'
12:18:42
rustyv
I am fully willing to suggest that it's issues on my end. I am rather fresh to the C++ world, and have no formal CS / programming background...
12:18:57
drmeister
Ok - can you provide some context? What branch of clasp were you building, what OS are you on - what version of the OS?
12:20:49
drmeister
Can you paste a log of what you are doing and seeing? Use gist.github.com to paste the log and paste the URL here.
12:36:56
rustyv
oh, additional bit of context: I am using a Digital Ocean VPS to run CLASP. Perhaps that is a factor, though I wouldn't know?
13:04:58
drmeister
rustyv: Could you try starting clasp in the hello-world directory and evaluate each line of hello-world.lisp one at a time to see which one fails?
13:08:23
drmeister
It may be messed up on Ubuntu - in which case it will take me a while to test it out. I'm a bit busy with preparing for things next week.
13:13:21
rustyv
I will keep looking into things on my own, thank you. Is there perhaps something I should look into next? Might it be some issue with llvm versions or clang versions?
13:16:55
drmeister
echo __ZTH9my_thread | c++filt --> thread-local initialization routine for my_thread
13:18:09
drmeister
It's the clang compiler that is supposed to generate that symbol - it suggests an OS dependent change in how thread-local memory is handled.
13:18:39
drmeister
Thread local memory is handled differently on different operating systems and it isn't as worked out as other aspects of the compiler.
13:20:14
rustyv
drmeister, that is certainly no issue. Thanks for your help so far! For what it's worth, I can spin up different VMs with different OSes and test things out that way
13:31:33
drmeister
Well, I would like it to work by next week because I'm going to mention it in a talk.
13:32:34
drmeister
We added multithreading to clasp recently and this has brought up some problems with thread-local storage - and of course the problems are different on different operating systems. (sigh)
13:38:49
rustyv
is there something you would like me to try out this weekend, perhaps? Maybe I can help in some way
13:54:12
drmeister
rustyv: For this demo that missing symbol on Ubuntu (and probably other linuxes) is a non-starter. You could try it on Debian 10
13:54:47
drmeister
If you have access to a Mac - you could try it on there as well - I tested it a few weeks ago and it was fine on macOS.
13:58:22
drmeister
This is after fixing about 100 bad implicit casts that are caught now by my new Inherit<T1,T2> template code.
13:59:11
drmeister
None of them looked really bad - but maybe I really can't spot the problem and it's better to let the compiler do it.
14:00:11
drmeister
This catches things like an object of type Foo ->(cast-to) T ->(cast-to) Bar and then treated like an object of type Bar.
14:11:48
rustyv
drmeister: I'll set up a Debian machine this weekend and see what I can learn :). No access to a Mac, unfortunately
14:13:18
drmeister
I used Ubuntu up until about 4 months ago and then we switched to Debian 10 as our reference Linux system.
14:13:45
drmeister
I'm pretty sure you will see the same problem - but if you don't that will be very helpful.
14:14:19
drmeister
We are spinning up a continuous integration system and we will be adding these demos as tests at some point - just not this week.
14:14:43
rustyv
Yea, I expect the same. Regardless, it's worth a look. And Debian as a reference OS makes more sense than Ubuntu, in my opinion
14:18:39
rustyv
mhmm. Anyway, drmeister, I should be going now. I'll pop back on IRC with the same nickname and let you know what I discover with Debian. (perhaps I'll even make a proper IRC account)
19:30:00
drmeister
Also, I've been delinquent in accepting pull requests - if there are any holding you back - tell me which ones and I'll accelerate those.
19:31:10
drmeister
kpoeck: Right - we saw that when you first tried. Then we turned on DEBUG_GUARDS and the problem appeared to go away.
19:31:46
kpoeck
I get recursive messages like In clos::dispatch-miss with generic function COMPUTE-APPLICABLE-METHODS-USING-CLASSES In clos::dispatch-miss with generic function COMPUTE-APPLICABLE-METHODS-USING-CLASSES
19:31:57
drmeister
Here's some hopeful news. I figured out how to tell the C++ compiler how clasp's hierarchy of tagged pointers inherit from each other.
19:33:36
drmeister
Inside the Clasp C++ code there are a lot of situations where smart_ptr<Foo_O> is cast to smart_ptr<Bar_O>. They are valid if Foo_O inherits from Bar_O but not the other way around.
19:34:19
drmeister
As of yesterday the scraper puts together a big block of template code that tells clang what inherits from what and so now the compiler catches bad casts.
19:35:07
drmeister
Once I'm done with this (I'm still fixing bad casts) I'll push it and we can try Mcclim again.
19:35:39
drmeister
One observation is that after fixing about half of the bad casts I was able to compile ASDF using the MPS garbage collector in Clasp for the first time.
19:36:30
drmeister
But the crash in Mcclim smells like a memory corruption problem. When I run with MPS memory corruption surfaces very fast.
19:37:45
drmeister
If there is a memory corruption problem it will be in the Boehm version as well - its just that since the MPS version moves memory around it is very, very sensitive to memory problems.