[Ecls-list] Threaded MSVC broken.

Samium Gromoff _deepfire at feelingofgreen.ru
Wed Jun 25 14:14:03 UTC 2008


From: "Juan Jose Garcia-Ripoll" <juanjose.garciaripoll at googlemail.com>
> Hi Samium,
> 
> sorry for the delay. It will take me some time to get back to the
> multithreaded MSVC build, but thanks for the information. The fact
> that the signal is produced in the garbage collector is no good
> symptom -- may be that the garbage collector is running out of memory.

Okay, I think I've got the gist of it:

DllMain()
 GC_init()
   GC_init_inner(), sets GC_all_inferior_pointers to 1
     GC_init_bl(), does its init according to GC_a_i_p being 1
....
main()
 cl_boot()
   init_alloc(), sets GC_all_inferior_pointers to 0
     GC_init()
       GC_init_inner(), sees GC_is_initialised, bails out
       ... GC_init_bl() is never called again ...
.... a part of GC is left configured with GC_a_i_p set to 0

some code (in the init_threads()) calls cl_alloc(), trips up...

Now, question is who gets to call GC_init() -- DllMain() or cl_boot()...


regards, Samium Gromoff





More information about the ecl-devel mailing list