It is clear that there is no support for OS level forking in v8, this has been mentioned previously.
However what is unclear is how to perform rudimentary cleanups so isolates and contexts can continue to be used post forking. In MiniRacer (v8 binding for Ruby) I have a trivial repro of a hang: https://github.com/rubyjs/mini_racer/issues/175 ``` (gdb) bt #0 0x00007f18d4fb202d in pthread_cond_signal@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0 #1 0x00007f18d084a5fc in v8::platform::DelayedTaskQueue::Append(std::unique_ptr<v8::Task, std::default_delete<v8::Task> >) () from /home/sam/Source/mini_racer/lib/mini_racer_extension.so #2 0x00007f18d0849db0 in v8::platform::DefaultWorkerThreadsTaskRunner::PostTask(std::unique_ptr<v8::Task, std::default_delete<v8::Task> >) () from /home/sam/Source/mini_racer/lib/mini_racer_extension.so #3 0x00007f18d0848f51 in v8::platform::DefaultPlatform::CallOnWorkerThread(std::unique_ptr<v8::Task, std::default_delete<v8::Task> >) () from /home/sam/Source/mini_racer/lib/mini_racer_extension.so #4 0x00007f18d1014653 in v8::internal::ConcurrentMarking::ScheduleTasks() () from /home/sam/Source/mini_racer/lib/mini_racer_extension.so #5 0x00007f18d09732ab in v8::internal::MarkCompactCollector::MarkLiveObjects() () from /home/sam/Source/mini_racer/lib/mini_racer_extension.so #6 0x00007f18d0972bb1 in v8::internal::MarkCompactCollector::CollectGarbage() () from /home/sam/Source/mini_racer/lib/mini_racer_extension.so #7 0x00007f18d09468ea in v8::internal::Heap::MarkCompact() () from /home/sam/Source/mini_racer/lib/mini_racer_extension.so #8 0x00007f18d0943389 in v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) () from /home/sam/Source/mini_racer/lib/mini_racer_extension.so #9 0x00007f18d0940f10 in v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) () from /home/sam/Source/mini_racer/lib/mini_racer_extension.so #10 0x00007f18d094141e in v8::internal::Heap::CollectAllAvailableGarbage(v8::internal::GarbageCollectionReason) () from /home/sam/Source/mini_racer/lib/mini_racer_extension.so #11 0x00007f18d087cdec in v8::Isolate::LowMemoryNotification() () from /home/sam/Source/mini_racer/lib/mini_racer_extension.so #12 0x00007f18d08445f6 in rb_isolate_low_memory_notification (self=94876640147440) at ../../../../ext/mini_racer_extension/mini_racer_extension.cc:783 ``` Contexts in mini_racer always get clean isolates, so somehow the task queue appears to be wedged post fork due to some global state maybe? What rudimentary cleanup can we do post for to ensure that new isolates and contexts can continue to be used? isolate->Dispose() seems insufficient. We are using v8 8.4 -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-users/95d7fbbd-50cf-4e9d-a635-dcba71dc6399n%40googlegroups.com.