Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

32-bit applications fail in readdir() with errno=75 EOVERFLOW on type 9p filesystems #12154

Closed
1 of 2 tasks
dajhorn opened this issue Oct 11, 2024 · 9 comments
Closed
1 of 2 tasks

Comments

@dajhorn
Copy link

dajhorn commented Oct 11, 2024

Windows Version

10.0.22631.4317

WSL Version

2.3.24.0

Are you using WSL 1 or WSL 2?

  • WSL 2
  • WSL 1

Kernel Version

5.15.153.1-2

Distro Version

Ubuntu 24.04.1 LTS

Other Software

No response

Repro Steps

Any 32-bit binary that calls readdir() can express the error, like this sample program that lists files in the current working directory:

#include <cerrno>
#include <dirent.h>
#include <iostream>

int main() {
    const char *path = ".";
    DIR *directory = opendir(path);

    if (!directory) {
        std::cerr << "Error opening directory: " << path << std::endl;
        std::cerr << "errno=" << errno << std::endl;
        return errno;
    }

    struct dirent *entry;
    while (entry = readdir(directory)) {
        std::cout << entry->d_name << std::endl << std::flush;
    }
    std::cerr << "errno=" << errno << std::endl << std::flush;

    closedir(directory);
    return 0;
}

With GCC:

i686-linux-gnu-g++-13 -static -o gpp-readdir-test.elf readdir-test.cpp
./gpp-readdir-test.elf

With Open Watcom v2:

wpp386 -bt=linux -d3 readdir-test.cpp
wlink name owc-readdir-test.elf system linux file readdir-test.o
./owc-readdir-test.elf

Expected Behavior

32-bit processes can use readdir() to enumerate directories that are in 9p mounts.

Actual Behavior

The first call to readdir() after opendir() on a 9p filesystem mount returns a null pointer and sets errno=75, which is EOVERFLOW.

Diagnostic Logs

No response

@dajhorn dajhorn changed the title 32-bit applications fail in readdir() fails with errrno=75 EOVERFLOW on type 9p filesystems 32-bit applications fail in readdir() with errrno=75 EOVERFLOW on type 9p filesystems Oct 11, 2024
Copy link

Logs are required for review from WSL team

If this a feature request, please reply with '/feature'. If this is a question, reply with '/question'.
Otherwise please attach logs by following the instructions below, your issue will not be reviewed unless they are added. These logs will help us understand what is going on in your machine.

How to collect WSL logs

Download and execute collect-wsl-logs.ps1 in an administrative powershell prompt:

Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-wsl-logs.ps1" -OutFile collect-wsl-logs.ps1
Set-ExecutionPolicy Bypass -Scope Process -Force
.\collect-wsl-logs.ps1

The script will output the path of the log file once done.

If this is a networking issue, please use collect-networking-logs.ps1, following the instructions here

Once completed please upload the output files to this Github issue.

Click here for more info on logging
If you choose to email these logs instead of attaching to the bug, please send them to wsl-gh-logs@microsoft.com with the number of the github issue in the subject, and in the message a link to your comment in the github issue and reply with '/emailed-logs'.

View similar issues

Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it!

Open similar issues:

Closed similar issues:

Note: You can give me feedback by thumbs upping or thumbs downing this comment.

Copy link

Logs are required for review from WSL team

If this a feature request, please reply with '/feature'. If this is a question, reply with '/question'.
Otherwise please attach logs by following the instructions below, your issue will not be reviewed unless they are added. These logs will help us understand what is going on in your machine.

How to collect WSL logs

Download and execute collect-wsl-logs.ps1 in an administrative powershell prompt:

Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-wsl-logs.ps1" -OutFile collect-wsl-logs.ps1
Set-ExecutionPolicy Bypass -Scope Process -Force
.\collect-wsl-logs.ps1

The script will output the path of the log file once done.

If this is a networking issue, please use collect-networking-logs.ps1, following the instructions here

Once completed please upload the output files to this Github issue.

Click here for more info on logging
If you choose to email these logs instead of attaching to the bug, please send them to wsl-gh-logs@microsoft.com with the number of the github issue in the subject, and in the message a link to your comment in the github issue and reply with '/emailed-logs'.

View similar issues

Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it!

Open similar issues:

Closed similar issues:

Note: You can give me feedback by thumbs upping or thumbs downing this comment.

@dajhorn
Copy link
Author

dajhorn commented Oct 11, 2024

This error only happens on NTFS drvfs mounts. The default C: mount expresses the error:

C:\ on /mnt/c type 9p (rw,noatime,dirsync,aname=drvfs;path=C:\;uid=0;gid=0;metadata;symlinkroot=/mnt/,mmap,access=client,msize=65536,trans=fd,rfd=4,wfd=4)

Toggling various drvfs options like metadata and trans does not resolve the glitch.

This glitch does not express on non-NTFS drvfs mounts.

@dajhorn dajhorn changed the title 32-bit applications fail in readdir() with errrno=75 EOVERFLOW on type 9p filesystems 32-bit applications fail in readdir() with errno=75 EOVERFLOW on type 9p filesystems Oct 11, 2024
Copy link

Logs are required for review from WSL team

If this a feature request, please reply with '/feature'. If this is a question, reply with '/question'.
Otherwise please attach logs by following the instructions below, your issue will not be reviewed unless they are added. These logs will help us understand what is going on in your machine.

How to collect WSL logs

Download and execute collect-wsl-logs.ps1 in an administrative powershell prompt:

Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-wsl-logs.ps1" -OutFile collect-wsl-logs.ps1
Set-ExecutionPolicy Bypass -Scope Process -Force
.\collect-wsl-logs.ps1

The script will output the path of the log file once done.

If this is a networking issue, please use collect-networking-logs.ps1, following the instructions here

Once completed please upload the output files to this Github issue.

Click here for more info on logging
If you choose to email these logs instead of attaching to the bug, please send them to wsl-gh-logs@microsoft.com with the number of the github issue in the subject, and in the message a link to your comment in the github issue and reply with '/emailed-logs'.

View similar issues

Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it!

Open similar issues:

Closed similar issues:

Note: You can give me feedback by thumbs upping or thumbs downing this comment.

@dajhorn
Copy link
Author

dajhorn commented Oct 11, 2024

@dajhorn
Copy link
Author

dajhorn commented Oct 11, 2024

Copy link

Failed to parse logs. Unexpected file: readdir-test.cpp
The log file doesn't contain any WSL traces. Please make sure that you reproduced the issue while the log collection was running.

Diagnostic information
Found no WSL traces in the logs

Copy link

Diagnostic information
Detected appx version: 2.3.24.0

Copy link
Contributor

This issue has been automatically closed since it has not had any author activity for the past 7 days. If you're still experiencing this issue please re-file it as a new issue.

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant