init stuck on PD session from platform_drv

Norman Feske norman.feske at ...1...
Tue Feb 20 10:25:36 CET 2018


Hello Boris,

On 16.02.2018 12:50, Boris Mulder wrote:
> [init -> init_system -> init_user -> init_wifi] child "nic_dump"
> announces service "Nic"
> Error: corrupted string
> ... 
> Now when this happens the whole system hangs, nothing else is working
> anymore.
> 
> As soon as the wifi_drv is started, this problem occurs.
> 
> When I did not have init_wifi and the wifi_drv was running on top of
> init_user, everything worked fine. Of course, I adjusted all the routes
> and policies (of the platform_drv) accordingly.
> 
> Could the label be too long for core to handle perhaps, or is something
> else happening? What do these error messages mean and why do they pop up
> now and not with one init less?

that is very likely the case.

All session arguments including the label are passed as a single
'Rpc_in_buffer<160>' argument to the `Parent::session` RPC function.
Whenever the session request is forwarded to a parent, the parent
prefixes the label with the originating child's name. Eventually, when
the nesting level becomes very deep, the resulting label might not fit
into the argument anymore.

The message "Error: corrupted string" is not directly printed by the
session-creation code path but by the log service [1], but it is
plausible that it is caused by a truncated label.

I wonder, have you tried to synthetically reproduce the problem outside
your actual scenario? This would greatly ease the diagnosis.

[1] src/core/include/log_session_component.h

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth




More information about the users mailing list