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!
Norman