Hello Sid,

we already discussed this topic briefly in March 2017 [1]. Back then
(and still today), I'd suggest to implement the scheme you like but do
not depend on with_libc() or any RPC to transparently handle custom
exceptions. I never dived deeper into making with_libc() more
user-friendly because, frankly, it has never been a common use case to
implement complext libc-based components with custom exceptions.

[1] Exceptions in with_libc not working
    https://lists.genode.org/pipermail/users/2017-March/005087.html

Regards
-- 
Christian Helmuth
Genode Labs

https://www.genode-labs.com/ · https://genode.org/
https://twitter.com/GenodeLabs · /ˈdʒiː.nəʊd/

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

On Mon, Mar 30, 2020 at 14:21:57 CEST, Sid Hussmann wrote:
> I just stumbled across a not so obvious characteristic of the with_libc 
> lambda. Not so obvious to me, at least.
> If I run following code snipped, it will result in a "Error: Uncaught 
> exception of type 'Genode::Exception'":
> 
> 
> ``` 
> try {
>       Libc::with_libc([&] () {
>               throw Genode::Exception();
>       });
> } catch (...) {
>       Genode::log("caught libc exception");
> }
> ```
> 
> I didn't find any documentation regarding the with_libc lambda in combination 
> with exceptions.
> Is this expected behavior?
> What would be the right pattern to forward the exception to a pure Genode 
> environment e.g. across RPC boundaries?
> I could think of following pattern:
> 
> 
> ``` 
> bool libc_exception_thrown = false;
> Libc::with_libc([&] () {
>       try {
>               throw Genode::Exception();
>       } catch (...) {
>               Genode::log("caught libc exception");
>               libc_exception_thrown = true;
>       }
> });
> if (libc_exception_thrown) {
>       throw My_rpc_exception();
> }
> ``` 
> 
> However, it does not look like the most elegant solution...
> 
> Cheers,
> Sid

_______________________________________________
Genode users mailing list
[email protected]
https://lists.genode.org/listinfo/users

Reply via email to