Re: Question about protected payloads
> 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
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
> Just to be sure, do you see what protected payloads are ? I think I don't, to be honest.
Re: Question about protected payloads
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
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