<
abu[7]>
Same with (catch NIL (co 'a (throw)))
<
abu[7]>
So
*some* co data are not cleaned up if the co is exited abnormally
bjorkintosh has quit [Quit: "Every day, computers are making people easier to use." David Temkin]
<
tankf33der>
morning
<
abu[7]>
Probably in llvm~unwind
rob_w has joined #picolisp
<
abu[7]>
I think I found it
<
abu[7]>
I hope I did not break anythiny
<
tankf33der>
Is it core issue?
<
abu[7]>
llvm~unwind
<
abu[7]>
Coroutines are by far the most complicated part of Pil :(
<
tankf33der>
Anyway pil21-tests the only hope
<
tankf33der>
to test
<
abu[7]>
There are so many variations to call coroutines
<
abu[7]>
OK. I release now.
<
tankf33der>
Running
<
abu[7]>
The problem was just one tiny field 'at' in the coroutine structure
<
abu[7]>
Must be set to zero in 'unwind'
<
tankf33der>
Passed
<
abu[7]>
'unwind' rolls back several structures in throw or error handling
msavoritias has joined #picolisp
Iacob has quit [Ping timeout: 272 seconds]
Iacob has joined #picolisp
<
tankf33der>
abu[7]: found gc cannot clean up garbage inside co after co exit
<
abu[7]>
How do you know it in not cleaned up?
<
tankf33der>
(heap)
<
tankf33der>
and gc can cleanup if i (off ..) it inside co before exit
<
tankf33der>
or before (yield)
<
tankf33der>
(heap) -> 2
<
abu[7]>
Then the data must still be referenced somewhere
<
abu[7]>
Is it in a local variable?
<
abu[7]>
(co ... (let ...
<
abu[7]>
Then it is not co-local
<
tankf33der>
let try let
<
tankf33der>
cleanuped! :)
msavoritias has quit [Ping timeout: 272 seconds]
msavoritias has joined #picolisp
abu[7] has quit [*.net *.split]
abu[7] has joined #picolisp
abu[7] has quit [*.net *.split]
abu[7] has joined #picolisp
<
beneroth>
thanks tankf33der and abu[7] for all the testing and improvements :)
<
beneroth>
you're the best
<
abu[7]>
Thanks beneroth!
rob_w has quit [Remote host closed the connection]
msavoritias has quit [Remote host closed the connection]