Hi Christian,

Thanks for the report.

On Sat, 25 Jul 2026 15:12:54 +0200
Christian Franke wrote:

> After 524d75ff ("Cygwin: open: Unlock fdtab before open_with_arch()"), 
> CI workflow shows that 'stress-ng --procfs ...' now hangs.
> 
> Testcase:
> 
> $ uname -r # not with 3.7.0-0.567.g161e3cb999fb.x86_64
> 3.7.0-0.569.g524d75ff7398.x86_64
> 
> $ cat proc-self-fd.c
> #include <errno.h>
> #include <fcntl.h>
> #include <pthread.h>
> #include <stdio.h>
> #include <unistd.h>
> 
> static void * threadfunc(void * arg)
> {
>    (void)arg;
>    for (int i = 0; i < 100000; i++) {
>      char path[32];
>      snprintf(path, sizeof(path), "/proc/self/fd/%d", i % 10);
>      int fd = open(path, O_RDONLY);
>      if (fd < 0) {
>        printf("%p#%06d: %s: errno=%d\n", pthread_self(), i, path, errno);
>        continue;
>      }
>      printf("%p#%06d: %s: fd=%d\n", pthread_self(), i, path, fd);
>      close(fd);
>    }
>    return NULL;
> }
> 
> int main()
> {
>    pthread_t t = NULL;
>    int ret = pthread_create(&t, NULL, threadfunc, NULL);
>    if (ret)
>      return 1;
>    threadfunc(NULL);
>    ret = pthread_join(t, NULL);
>    printf("pthread_join(%p, .)=%d\n", t, ret);
>    if (ret)
>      return 1;
>    return 0;
> }
> 
> $ gcc -o proc-self-fd proc-self-fd.c
> 
> $ ./proc-self-fd
> ...
> 0xa00000500#001908: /proc/self/fd/8: errno=2
> 0xa00000010#001900: /proc/self/fd/0: fd=3
> 0xa00000500#001909: /proc/self/fd/9: errno=2
> 0xa00000010#001901: /proc/self/fd/1: errno=14<== EFAULT
> [hangs, kill -9 does not work]
> 
> $ strace -o trace.log ./proc-self-fd
> [taskkill /f /im proc-self-fd.exe in other window]
> 
> $ less trace.log
> ...
>     25   21725 [main] proc-self-fd 14876 fhandler_pty_slave::open_setup: 
> /dev/pty1 opened, usecount 3
>     61   21786 [main] proc-self-fd 14876 build_fh_pc: found an archetype 
> for (null)(136/1) io_handle 0x200
>     66   21852 [main] proc-self-fd 14876 build_fh_pc: fh 0x800008E40, 
> dev 00880001
>     71   21923 [main] proc-self-fd 14876 fhandler_base::open_with_arch: 
> line 471: /dev/pty1<0x8000086F0> usecount + 1 = 4
> --- Process 3968 (pid: 14876), exception c0000008 at 00007ff81682416a
> --- Process 3968 (pid: 14876), exception c0000008 at 00007ff81682416a
> ...
> 
> 
> "... found an archetype for (null) ..." <== Hmm...

Perhaps, this is due to the defects pointed out by Johannes.
https://cygwin.com/pipermail/cygwin-patches/2026q3/015227.html

-- 
Takashi Yano <[email protected]>

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to