Hi,
When I'm checking curl test 546. I found that it went into a situation
that:
```
Thread 4 hit Breakpoint 1, __GI___select (nfds=0, readfds=0x103cc20,
writefds=0x103cc40, exceptfds=0x103cc60, timeout=0x103cc84)
at ../sysdeps/mach/hurd/select.c:31
```
When I continue, it hangs at mach_msg[0]:
gdb backtrace:
```
#0 0x011a206c in __GI___mach_msg_trap () at
./build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
#1 0x011a2800 in __GI___mach_msg (msg=0x103cad4, option=1282, send_size=0,
rcv_size=40, rcv_name=13, timeout=50000, notify=0)
at ./mach/msg.c:111
#2 0x011cb633 in _hurd_select (nfds=<optimized out>, pollfds=<optimized out>,
readfds=<optimized out>, writefds=<optimized out>,
exceptfds=<optimized out>, timeout=<optimized out>, sigmask=<optimized
out>) at ./hurd/hurdselect.c:423
```
If my comprehension is correct, nfds == 0 means that no descriptor needs
to be tested:
>From POSIX:
```
The nfds argument specifies the range of descriptors to be tested. The first
nfds descriptors shall be checked in each set; that is, the descriptors from
zero through nfds-1 in the descriptor sets shall be examined.
```
So probably we should directly return from hurd_select when nfds == 0?
Best,
Zhaoming
[0]:https://sourceware.org/git/?p=glibc.git;a=blob;f=hurd/hurdselect.c;h=7ece4aa371e2da050a17230e2398a730448aaaa8;hb=HEAD#l423