libera/#clasp - IRC Chatlog
Search
20:09:09
drmeister
I copy the link command out of the waf output, put it in a file and add --verbose to it.
20:09:24
drmeister
It's slow but I get a bunch of scripts that I can play with to mess with the compile and link options.
20:38:57
drmeister
Bike: It's failing during build_aboehm - is that what you were seeing? The compile/link look fine this might be a bug in our unwinding?
21:32:12
drmeister
If you have some time - let's dig into this together. It's a return-from that is not finding its block. I have it trapped in udb. I can forward and reverse through the code to the crash.
21:40:29
drmeister
This means the next return-from will throw and should match one of these blocks - right? But it's blowing through one of them.
21:46:25
Bike
so there's going to be several throws before it runs out of blocks and terminates, probably
21:47:23
drmeister
Yeah - and it writes a unique handle into the activation frame element 0 and the catch checks if the returnFrom handle matches it.
22:56:38
drmeister
When it crashes - I have the ReturnFrom that contains that handle that isn't matching anything on the call stack.
22:57:42
drmeister
I'm putting a watchpoint on that address - then I'll reverse to where whatever code writes into that address.
23:10:10
drmeister
https://github.com/clasp-developers/clasp/blob/main/src/lisp/kernel/cmp/codegen.lsp#L308
23:11:30
Bike
doesn't look like it should... i mean, it calls error, and error can call functions that throw, but not this function itself
23:11:33
drmeister
I reverse-continued to the point where the ReturnFrom value that was thrown was initialized.
23:12:22
Bike
was this the actual original throw, or just the one that resulted directly in the terminate
23:15:19
drmeister
Thinking... this is what is being evaluated when this initializes the ReturnFrom::_Handle slot that fails to find a matching block when it unwinds.
23:19:10
Bike
"In a catch clause, when the argument is of the same type (ignoring cv-qualification) as the exception object thrown, the copy of the exception object is omitted and the body of the catch clause accesses the exception object directly, as if caught by reference (there cannot be a move from the exception object because it is always an lvalue). This is disabled if such copy elision would change the observable
23:19:16
Bike
behavior of the program for any reason other than skipping the copy constructor and the destructor of the catch clause argument (for example, if the catch clause argument is modified, and the exception object is rethrown with throw). "
23:21:44
drmeister
I think it is creating a new ReturnFrom object. I'm in the ReturnFrom constructor - I don't know if it's a copy constructor or what.
23:22:46
Bike
what's the build command to get the interpreter with aclasp loaded but not compiled into it? rboehm?
0:01:15
drmeister
Bike: There's also an clang compiler command line option --unwindlib=libunwind and -rtlib=compiler-rt
2:27:27
drmeister
I think the llvm unwind header is here? /opt/clasp/lib/clang/13.0.0/include/unwind.h
2:49:14
Bike
drmeister: specifying LD_LIBRARY_PATH as di bella suggested lets me run the interpreter, at least
2:53:07
drmeister
How about I put the header file into clasp's source tree for now. clasp/include/external/llvm-libunwind/libunwind.h
2:56:57
Bike
i put -L/opt/clasp/lib in but that didn't help. I guess I need to add it to ldconfig or whatever