Rm_session_cap invalid

Norman Feske norman.feske at ...1...
Wed May 26 16:19:58 CEST 2010

Hi Steffen,

> during startup of the init task, the init thread tries to get an
> "Env::rm_session" from core. Core responds by giving it a capability
> with local_name() == 0, which is invalid in my context. The cap is
> returned from _process.rm_session_cap(), which is implemented in process.h:
> Rm_session_capability rm_session_cap() const {return _rm.cap(); }
> _rm is defined as Rm_connection in class Process. I am unsure however,
> which Constructor belongs to to Rm_connection, and why it sets the
> capability to zero. Can you help me by pointing me to the right spots?

The 'Env::rm_session' is the RM session managing the address space of
the process. It is created by the parent (in your case, core) at
construction time of the 'Child' object. The RM session is created via
core's 'env()->parent()->session()', which is directed to the core-local
'Core_parent::session()' function (in 'core/main.cc'). For checking if
the constuction of init's RM session succeeded, I recommend you to
instrument the '_create_session' function in 'core/include/rm_root.h'
and the 'Core_parent::session()' function. Check for the capabilities
returned by 'ls->root()->session(args)'.

Good luck!


More information about the users mailing list