f02958b25f
First make the clients inaccessible and dissolve them from the entrypoint. If this isn't the first step the clients may be obtained again between the unlock and lock steps in the destructor. Additionally the clients may be removed in between the unlock and call sequence, which renders such client pointers dangling and causes spurious page faults. Keep instead a lock as long as possible and when it is required to release a lock, then the pointer to the objects must be revalidated. Replace the dissolve function with a remove_client implementation as suggested by #13, which avoids that the cpu_session may call dissolve with a dangling pointer of a already removed rm_client object. Instead the pager must be released explicitly. Related to issue #549 Related to issue #394 Related to issue #13 |
||
---|---|---|
.. | ||
etc | ||
include | ||
lib | ||
mk | ||
run | ||
src | ||
README |
This is generic part of the Genode implementation. It consists of two parts: :_Core_: is the ultimate root of the Genode application tree and provides abstractions for the lowest-level hardware resources such as RAM, ROM, CPU, and generic device access. All generic parts of Core can be found here - for system-specific implementations refer to the appropriate 'base-<system>' directory. :_Base libraries and protocols_: that are used by each Genode component to interact with other components. This is the glue that holds everything together.