freenode/#clasp - IRC Chatlog
Search
20:26:06
drmeister
Check what xcode you have it may have been updated. I just started it up and it says 12.3 and asked me to install components.
20:32:43
drmeister
I'd be surprised that that is the problem. boost hasn't given us problems for a long time.
20:36:11
cracauer
fixed. The problem was that boost 1.60 seemed to have partially conflicted with 1.75. Reinstall of 1.75 fixed it.
21:21:14
drmeister
I'm trying to get clasp in the new boehmprecise mode to work with compile-file-parallel.
21:22:42
drmeister
But when I invoke compile-file-parallel every thread gets stopped by a signal 24.
21:23:20
drmeister
That's SIGXCPU - this looks like boehm is sending the signal to stop all the threads for GC - which would be regular maintenance/normal operation.
21:30:07
frgo
I am now online. Hello. And yes, SIGXCPU is used as the thread restart signal. See https://github.com/ivmai/bdwgc/blob/57b97be07c514fcc4b608b13768fd2bf637a5899/pthread_stop_world.c#L376
21:31:57
drmeister
frgo: We've made a lot of progress. I have a clasp running with boehmprecise mode
21:32:38
drmeister
But compile-file-parallel doesn't work and it looks like clasp is responding poorly to the SIGXCPU signal that boehm sends to all threads to suspend them for GC.
21:33:02
drmeister
"responding poorly" = treating it like an error and bringing up the clasp debugger.
21:34:10
frgo
boehmgc does handle this specially. See https://github.com/ivmai/bdwgc/blob/57b97be07c514fcc4b608b13768fd2bf637a5899/pthread_stop_world.c#L356
21:34:53
frgo
Hm - yes, don't know. I haven't been following any code changes in boehmgc, if there are any.
21:36:35
drmeister
I haven't made any changes to boehmprecise that deals with signals relative to boehm.
21:37:01
drmeister
To be clear. clasp "boehm" mode means the boehm version of clasp that we all know and love.
21:37:44
drmeister
clasp "boehmprecise" mode is a new boehm mode for clasp that uses the offsets of pointers from the static analyzer to scan a subset of pointers in objects - it makes boehm precise on the heap and it remains conservative on the stack.
21:38:14
drmeister
No - I'm working in the "precise" brach of clasp. I need to push some stuff. Do you want the latest "precise" branch?
21:38:42
drmeister
It's easy to use. You set USE_COMPILE_FILE_PARALLEL = False in wscript.config and use:
21:44:05
drmeister
No need - I will build on macOS to make sure that it works - but you can proceed as well - it should build.
21:44:24
drmeister
I'll paste a wscript.config that I am using for debugging so you can replicate my system
21:54:38
drmeister
I am running iclasp-boehm and invoking compile-file-parallel from inside of the udb (gdb with timetraveling) debugger.
21:55:32
drmeister
This iclasp-boehm is exactly the same code as iclasp-boehmprecise - the iclasp-boehm is just using boehm in the conservative mode
22:00:52
drmeister
If I do this in iclasp-boehmprecise and catch the SIGXCPU - the backtrace looks the same - but then I STOP handling the SIGXCPU and continue and the clasp debugger starts up.
22:03:10
drmeister
It looks like in both cases it goes in to GI___sigsuspend in both cases but when it proceeds with iclasp-boehmprecise, clasp reacts like there was an error and starts up the debugger.
22:03:49
drmeister
I don't know what happens with iclasp-boehm - perhaps I can single step and follow the execution from the point of catching the signal.
22:06:58
drmeister
To support boehmprecise mode (and all the GC modes) I now have the CPP flags set up like this...
22:10:23
drmeister
The conservative/old/regular mode of boehm has USE_BOEHM defined and NOT defined USE_PRECISE_GC
22:10:47
drmeister
I don't believe that I changed how boehm is initialized when USE_PRECISE_GC - checking...
22:13:29
drmeister
As far as I see - the only thing I do for boehmprecise mode is define new boehm 'kinds' and mark procedures.
22:13:58
drmeister
Also, when I allocate objects with boehm - I call functions that I pass the object 'kind' to.
22:16:43
drmeister
frgo: FYI - I'm using the Undo debugger - it's a time-traveling debugger that lets me step backwards. It's very handy.
22:18:21
frgo
Yeah - no worries. I need to completely setup my clasp build env from scratch. So that takes some time...
22:18:49
drmeister
I'm currently running iclasp-boehm, telling udb to 'handle SIGXCPU stop" and then I'll step forward and see what the normal behavior should be.
22:20:13
drmeister
The other thing we have done is compiled boehm with debug flags and we link it in to clasp so we can see the source code.
22:27:35
frgo
drmeister: Could you email me your wscript.config file? => frank.goenninger@goenninger.net
22:31:02
drmeister
I'm really hopeful here - because it doesn't look like some kind of nasty race condition - it looks like the normal boehm GC process of sending the SIGXCPU signal to the threads to suspend them is not being handled properly by clasp.
22:42:06
drmeister
Yeah - cracauer built it on macOS and ignored my suggestion of USE_COMPILE_FILE_PARALLEL = False - that was a good thing.
22:42:35
drmeister
I just reproduced it by running compile-file-parallel on macOS from iclasp-boehmprecise
22:43:32
drmeister
Here is evidence that compile-file-parallel works with iclasp-boehmprecise on macOS...
22:44:25
drmeister
It is gratifying that it works though. It's even more evidence that we don't have a horrible race condition.
22:45:22
frgo
Hm - one of the "niceties" of macOS is that is, well, different ion signal handling than linux. macOS has BSD heritage.
22:47:20
frgo
cracauer: Yep. - Does clasp run on FreeBSD" sorry - haven't been following if that was done already.
23:19:57
drmeister
I just noticed that I wasn't running exactly the configuration of boehmprecise that I thought I was. I'm running tests with boehmprecise on macOS.
23:42:04
drmeister
To elaborate on my previous statement that iclasp-boehmprecise wasn't quite running the way I thought it was when I said it was working...
23:43:09
drmeister
In Boehm you can allocate object in a fully conservative way and you can allocate objects as different 'kinds' that invoke special marking code. You can define your own kinds.
23:44:02
drmeister
I set up kinds and marking procedures for general objects and for containers. I'm still debugging them. I'm pretty sure I had the general object marking procedure working yesterday but then for some reason I switched everything over to use default boehm kinds that use boehms mark procedures.
23:44:17
drmeister
They work like mine - it's just that mine only marks what is needed and boehm marks everything.
23:44:41
drmeister
So I think everything is fine. I'm installing my mark procedures again and testing them on macOS and linux.
23:46:16
drmeister
So it's not like we can be missing pointers because that crashes very fast in MPS when you do that.