Hi again,
I am unsure about the startup sequence of the init task (or any other task other than core, for that matter). The setup looks like this:
Task Thread Core main (initializes core, sleeps) activation (used as service provider by core's threads) pager (pager for all(?) threads started by core) init(0) (service thread for init) Init init(1)
Now init(1) calls init(0), does some initialization in finally gets stuck in __cxa_guard_acquire. The stack trace looks like this: ========================= 1 0x182818 .... 0x159110 __cxa_guard_acquire(T) + 0x20 = 0x1590f0 2 0x182838 32 0x15d31c Genode::env()(T) + 0x2c = 0x15d2f0 3 0x182868 48 0x1591b5 malloc(t) + 0x25 = 0x159190 4 0x182898 48 0x1596c8 __cxa_allocate_exception(T) + 0x28 = 0x1596a0 5 0x1828d8 64 0x15f00f Genode::Ipc_client::_call()(T) + 0x11f = 0x15eef0 6 0x182918 64 0x15dcb3 Genode::Parent_client::session(char const*, char const*)(W) + 0x183 = 0x15db30 7 0x1829b8 160 0x15cdf5 Genode::Platform_env::Platform_env()(W) + 0xb5 = 0x15cd40 8 0x1829d8 32 0x15d32c Genode::env()(T) + 0x3c = 0x15d2f0 9 0x182a08 48 0x1591b5 malloc(t) + 0x25 = 0x159190 10 0x182a28 32 0x157a2c __register_frame(T) + 0x2c = 0x157a00 11 0x182a38 16 0x1590e0 init_exception_handling()(T) + 0x20 = 0x1590c0 12 0x182a58 32 0x163168 _main(T) + 0x28 = 0x163140 13 0x0 .... 0x1631c0 _start(T) + 0xc = 0x1631b4 =========================== It is unclear to me, why init has to grab a lock. Is it using data structures that reside in shared memory with core? What should happen next?
Many thanks in advance, Steffen