freenode/#sbcl - IRC Chatlog
Search
16:13:17
|3b|
if sbcl is in a loop inside WITH-PINNED-OBJECTS, foreign threads can use the pinned objects safely, right? (unthreaded arm32 sbcl if it matters)
17:51:19
|3b|
ok, was about to start trying to run a callback as a foreign thread, but decided to refactor first so interface with callback would be simpler, and now it doesn't work right again :p
17:52:35
|3b|
ACTION is using "push some stuff onto a list" debugging, since "print stuff" debugging is too slow
17:56:53
|3b|
ACTION found problem with refactor i think, was adding an offset to something that already included the offset :/
17:57:24
stassats
make-genesis-2 / make-target-2 --load is not too bad, but power7 is about 3 times slower than my desktop cpu
18:51:36
|3b|
if i want to write from one thread and make sure another sees all the writes, i do (sb-thread:barrier (:memory) write-stuff ...)? do i need anything needed on the reading side? (still arm32 if it matters)
18:53:52
|3b|
actually i guess i have 2 parts that need to be visible in order, so (barrier (:memory) (barrier (:write) write stuff) write-stuff-2) ;; other thread can see everything correctly now ?
18:54:47
|3b|
where write-stuff generates data for other thread, and write-stuff-2 tells other thread it is available and where
18:56:41
stassats
ok, (sb-thread:barrier (:memory) body)is the same as body body (sb-thread:barrier (:memory))
20:11:34
stassats
i might have another theory that i haven't considered, it gets broken during unwinding, what if it's incorrectly unwinds NSP, and the call to collect_garbage just overwrites the previous context
20:32:30
|3b|
(where 'sane' means "not trying to start lisp code on another thread without telling sbcl about it"))
20:41:38
stassats
write protection faults to lisp memory would not work from foreign threads, for one thing
20:45:10
|3b|
though at least i know i can run foreign threads now, and do such complicated things as sleep and return the value of a global :)
20:50:19
stassats
depends on how low latency you want it to be, but sleep is already an os primitive relinquishing your time slice
20:54:24
|3b|
that part doesn't need to be too low latency, just needs to run at least 9 or so times/sec
20:54:57
|3b|
the foreign thread is handling the latency sensitive part, but doesn't actually generate that much data
20:56:17
|3b|
"we can only give you 9fps of actual data because of export regulations, but we'll give you 30fps anyway because reasons"
20:57:38
|3b|
claimed reason is something about that making it easier to send to video hardware, but since it isn't exactly 30 (or almost 30 like tv), i'm guessing real reason is so they can flip a hardware switch and turn it into a non-export version without changing anything else :p
22:05:23
stassats
it doesn't fail in the compiler but it doesn't fail when the compiler is not involved
23:05:46
stassats
since it involves unwinding from a type error which is signalled by an interrupt, which creates an interrupt context
23:07:26
stassats
solved 20 minutes after coming up with a proper test case, after coming up with a better test case for several days
0:32:47
stassats
so the idea of interrupting the tests randomly turned out to be worthwhile, but slow and not thorough
2:26:47
|3b|
heh, would probably help if i didn't try to cons in my supposedly non-consing foreign thread :p