Re: Question about protected payloads

2018-07-26 Thread Joan Lledó
> Very briefly, they are an optimization to avoid a lookup. Instead of
> receiving a port name and looking up the associated object from it,
> we use protected payloads, which are merely user-assigned arbitrary
> values associated to ports, to store the address of the associated
> object directly, and that's what you receive instead of the port
> name.

I had a vague idea from what I read in the wiki, now it's clearer. Thanks!

Finally this bug disappeared after switching to a fresh and newer Hurd
image. I guess I broke something after compiling/installing so many
libc and gcc versions in my image during the last year.

Regards.



Re: Question about protected payloads

2018-07-24 Thread Richard Braun
On Tue, Jul 24, 2018 at 08:31:18AM +0200, Joan Lledó wrote:
> > Just to be sure, do you see what protected payloads are ?
> 
> I think I don't, to be honest.

Very briefly, they are an optimization to avoid a lookup. Instead of
receiving a port name and looking up the associated object from it,
we use protected payloads, which are merely user-assigned arbitrary
values associated to ports, to store the address of the associated
object directly, and that's what you receive instead of the port
name.

-- 
Richard Braun



Re: Question about protected payloads

2018-07-23 Thread Joan Lledó
> Just to be sure, do you see what protected payloads are ?

I think I don't, to be honest.



Re: Question about protected payloads

2018-07-23 Thread Richard Braun
On Sat, Jul 21, 2018 at 10:48:07AM +0200, Joan Lledó wrote:
> I'm blocked with a bug in the lwIP translator that's driving me crazy:
> under some particular circumstances, calling select() over two ports
> results on only one of these io_select RPCs being received by the
> translator. The other one is returned to glibc as EOPNOTSUPP.
> 
> I debugged enough to identify the source of this errno at
> ports_manage_port_operations_multithread() [1], particularly, the
> problems seems to be the bucket passed to
> ports_manage_port_operations_multithread() not matching the one inside
> the payload.
> 
> Anyone has a hint on what could be happening here? I'm lost :(
> 
> Reproducing this bug is easy: just install the liblwip0 package and
> try to open a ssh connection to our lwip translator.

Just to be sure, do you see what protected payloads are ?

-- 
Richard Braun



Question about protected payloads

2018-07-21 Thread Joan Lledó
Hello Hurd,

I'm blocked with a bug in the lwIP translator that's driving me crazy:
under some particular circumstances, calling select() over two ports
results on only one of these io_select RPCs being received by the
translator. The other one is returned to glibc as EOPNOTSUPP.

I debugged enough to identify the source of this errno at
ports_manage_port_operations_multithread() [1], particularly, the
problems seems to be the bucket passed to
ports_manage_port_operations_multithread() not matching the one inside
the payload.

Anyone has a hint on what could be happening here? I'm lost :(

Reproducing this bug is easy: just install the liblwip0 package and
try to open a ssh connection to our lwip translator.

---
[1] 
https://git.savannah.gnu.org/cgit/hurd/hurd.git/tree/libports/manage-multithread.c#n219