* src/vm/garbage.c
! added protection for activating GC from thread with unlocked HVM stack
when other thread is already executing GC passes. Such situation does
not happen in core code and the protections is only just in case.
* src/vm/hvm.c
! do not release HVM thread STOP signal when GC mark pass is activated.
It was very serious bug which could cause memory corruption when
thread unlocked HVM stack what allow to start GC mark pass by other
thread and then locked HVM and begin to change complex variables
still scanned by the GC thread. This problem have existed from the
beginning when I committed initial version of Harbour MT support.
I do not remember why I added code to remove the STOP signal - probably
I was experimenting with some new things working on Harbour MT code
and I forgot to deactivate it.
NOTE: 3-rd party developers who use GC collectible pointer items
must not activate any PRG code execution inside their mark
functions.
8.9 MiB
8.9 MiB
The file is too large to be shown.
View Raw