Discussion:
Problem with custom rm-service
David Werner
2016-02-08 14:26:17 UTC
Permalink
Hi Genode mailing list,

the last few days I wrote a server component (called proxy_server) which
offers a custom RM-service called "PRM" (Proxy_RM).

Under the hood the component maintains a Rm_connection within each
Prm_session_component in order to use the original core rm_service. My
aim is to intercept all attach and detach operations.

Compiling and linking works perfectly but when I run my system scenario
(on foc_x86_64) I get the following output:


Genode 15.11-71-g2e0e767
int main(): --- create local services ---
int main(): --- start init ---
int main(): transferred 112 MB to init
int main(): --- init created, waiting for exit condition ---
[init] Could not open ROM session for module "ld.lib.so"
[init -> proxy_server]
Proxy::Prm_root::Prm_root(Genode::Rpc_entrypoint*,
Genode::Allocator*):Creating PRM_root_component...
[init -> proxy_server] int main(): PRM_root created and back in main!
[init -> proxy_server] virtual Proxy::Prm_session_component*
Proxy::Prm_root::_create_session(const char*): Creating
Prm_session_component...
[init -> proxy_server] int main(): PRM service announced -> going to
sleep...
Genode::Signal_session_component::submit(Genode::Signal_context_capability,
unsigned int)::<lambda(Genode::Signal_context_component*)>: invalid
signal-context capability
Genode::Pager_entrypoint::entry()::<lambda(Genode::Pager_object*)>:
Could not resolve pf=401feff8 ip=100b9af
Error: Test execution timed out
make: *** [run/proxy] Fehler 254


I do not understand where the output:

Genode::Signal_session_component::submit(Genode::Signal_context_capability,
unsigned int)::<lambda(Genode::Signal_context_component*)>: invalid
signal-context capability
Genode::Pager_entrypoint::entry()::<lambda(Genode::Pager_object*)>:
Could not resolve pf=401feff8 ip=100b9af

comes from.

Is there anyone who can help me with this or who has an idea what I can try?

If needed I can post my code here.

Best Regards,

David
Christian Prochaska
2016-02-08 15:01:54 UTC
Permalink
Hi David,
Genode::Pager_entrypoint::entry()::<lambda(Genode::Pager_object*)>: Could not resolve pf=401feff8 ip=100b9af
this page fault address is part of the thread stack area on Fiasco.OC (0x40000000 - 0x50000000). So it looks like there is a thread
which does not have enough stack allocated. Do you have a thread with a stack size of 4096 bytes in your component?

Christian
David Werner
2016-02-08 17:06:06 UTC
Permalink
Hi Christian,

thank you very much for your answer!
Yes, the stack of the entrypoint has a size of 4096 bytes. I just
doubled that value and it works now. Is 8*1024 bytes a reasonable stack
size?

Best Regards,
David
Post by Christian Prochaska
Hi David,
Post by David Werner
Could not resolve pf=401feff8 ip=100b9af
this page fault address is part of the thread stack area on Fiasco.OC
(0x40000000 - 0x50000000). So it looks like there is a thread which
does not have enough stack allocated. Do you have a thread with a
stack size of 4096 bytes in your component?
Christian
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
Christian Prochaska
2016-02-09 11:07:36 UTC
Permalink
Hi David,
Is 8*1024 bytes a reasonable stack size?
for simple components without big objects allocated on the stack it's
usually enough. Personally, I tend to use 2*1024*sizeof(Genode::addr_t)
in new components.

Christian

Loading...