.NET allows each finalizer thread up to 2 seconds to complete and 40 seconds for...
authorNeale Ferguson <neale@sinenomine.net>
Sun, 18 Dec 2016 13:08:48 +0000 (08:08 -0500)
committerZoltan Varga <vargaz@gmail.com>
Sun, 18 Dec 2016 13:08:48 +0000 (08:08 -0500)
mono/metadata/gc.c

index 3a694a4b8e95867c7d7db2d90758f49df13b6423..1a452c083ee0384a7dedfc9a4dc5d6d06b6c033e 100644 (file)
@@ -1019,11 +1019,12 @@ mono_gc_cleanup (void)
                if (mono_thread_internal_current () != gc_thread) {
                        int ret;
                        gint64 start_ticks = mono_msec_ticks ();
-                       gint64 end_ticks = start_ticks + 2000;
+                       gint64 end_ticks = start_ticks + 40000;
 
                        mono_gc_finalize_notify ();
                        /* Finishing the finalizer thread, so wait a little bit... */
-                       /* MS seems to wait for about 2 seconds */
+                       /* MS seems to wait for about 2 seconds per finalizer thread */
+                       /* and 40 seconds for all finalizers to finish */
                        while (!finalizer_thread_exited) {
                                gint64 current_ticks = mono_msec_ticks ();
                                guint32 timeout;