mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-22 10:21:04 +00:00
Following deadlock happens when a Rm_client/Pager_object handles a page-fault and concurrently the same object is dissolved (triggered by parent killing the client). The situation is as follows: Page fault handling : base-nova/src/base/pager/pager.cc : pf_handler() - lock pf_lock base/.../core/rm_session_component.cc: pager() - lock rm_session (in reverse_lookup()) Dissolve of Rm_client: base/src/core/rm_session_component.cc: dissolve() - lock rm_session base-nova/src/base/pager/pager.cc : dissolve() - lock pf_lock The pf_lock is not required here during normal page fault handling, since this pager object @NOVA is executed only by one and the same thread and all critical operations inside the rm_session_object itself are locked anyway. The only critical point is the destruction of the Pager_object which is already handled in the both dissolve functions of the rm-session_component (locking) and the pager_object (finalize in-flight page faults).
This repository contains the port of Genode to the NOVA microhypervisor. For more information on this base platform, please refer to the official website. :[http://hypervisor.org]: Official website for the NOVA microhypervisor. For information on using Genode on NOVA, please revisit the documentation at 'base-nova/doc/nova.txt':