NOVA: Capability selectors cause call of invalid portal
Alexander Boettcher
alexander.boettcher at ...1...
Mon Jul 30 20:16:56 CEST 2012
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello,
this is a known issue described in [0]. The available fix [1] is
currently not in genode master nor staging. If you want you can give
it a try.
Cheers,
Alex.
[0] https://github.com/genodelabs/genode/issues/247
[1] https://github.com/alex-ab/genode/tree/issue247
On 30.07.2012 19:19, Markus Partheymueller wrote:
> Hi,
>
> I am quite stuck with a problem I encountered when using a timer
> connection in Vancouver. As soon as the unique IDs of the
> capabilities for RPC reach numbers >= 0x100000, RPC calls fail
> because of calls to invalid portal numbers. In my particular case,
> there are 4 portals created:
>
> [ 0] EC:0xc0019f00 SYS_CREATE PT:0x1a06 EC:0xa7 EIP:0x139950 [ 0]
> EC:0xc0019f00 SYS_CREATE PT:0x1a07 EC:0xa7 EIP:0x1398d0 [ 0]
> EC:0xc0019f00 SYS_CREATE PT:0x1a08 EC:0xa7 EIP:0x139950 [ 0]
> EC:0xc0019f00 SYS_CREATE PT:0x1a09 EC:0xa7 EIP:0x1398d0
>
> In base/include/base/rpc_client.h, I inserted a debug statement
> showing that the "internal" portal being called is 0x82260. I think
> this is due to the translation between global capability selectors
> and NOVA portals, is that correct?
>
> When the internal IDs hit 0x100000, what happens is this:
>
> [ 0] EC:0xc0019f00 SYS_CREATE PT:0x30e6 EC:0xa7 EIP:0x139950 [ 0]
> EC:0xc0019f00 SYS_CREATE PT:0x30e7 EC:0xa7 EIP:0x1398d0 [ 0]
> EC:0xc0019f00 SYS_CREATE PT:0x30e8 EC:0xa7 EIP:0x139950 [ 0]
> EC:0xc0019f00 SYS_CREATE PT:0x30e9 EC:0xa7 EIP:0x1398d0
>
> But the next event in NOVA is a call to portal number 0x100018,
> which doesn't exist because it was not created beforehand. It
> seems to me that from this point in time, the internal IDs are
> being used as NOVA portals somehow. But all I found was this
> unmarshalling method in base-nova/include/base/ipc.h:
>
> inline void
> Genode::Ipc_istream::_unmarshal_capability(Genode::Native_capability
>
>
>
&cap)
> { long unique_id = 0; _read_from_buf(unique_id); int pt_sel =
> unique_id != ~0L ? _rcv_msg->rcv_pt_sel() : 0;
>
> cap = Native_capability(pt_sel, unique_id); }
>
> I put another debug instruction there and found out that
> rcv_pt_base was 0x100018, when the call failed.
>
> Right now I'm quite lost in all that RPC and Capability wrangling.
> Maybe someone can shed some light on this? How is that translation
> between internal IDs and NOVA portals done, anyway?
>
> Cheers
>
> Markus
>
> ------------------------------------------------------------------------------
>
>
>
Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond.
> Discussions will include endpoint security, mobile security and
> the latest in malware threats.
> http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________ Genode-main
> mailing list Genode-main at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAlAWz5QACgkQqjRK9KYzJbPfrwCfS5w5knUdyq7j8mW2C+wyDq8S
M08AoMBGF26af9biQxSbfaiEX9cAC1Bp
=48Qx
-----END PGP SIGNATURE-----
More information about the users
mailing list