TL;DR A nanswer that might help you towards an answer.
What do I know?
Not a lot. I haven't used Windows for dev in years. I've not seen this error before.
I just decided to see what I could find. I found a couple things, read between the lines, and... ended up with this nanswer.
read from dirhandle failed: 123
A google for "read from dirhandle failed: 123" listed two matches for me.
One was this SO. I'm not sure that's especially helpful, though we are trying!
The other match was:
githubmemoryhttps://githubmemory.com › ... · Translate this page ⋮
ohmycloud Profile - githubmemory
When I clicked it it did not include the error message I'd searched for.
But clicking the ⋮
showed an About this result
popup, and a cache
button at the bottom of that popup linked to an earlier version of the page that the search had matched. (This is a general trick to know about when a search result appears not to contain something you'd just searched for.)
And that page (which I can see with this URL; YMMV) contained this match:
when execute above script as Administrator, failed with read from dirhandle failed: 123
But it wasn't conclusive. Hmmm.
githubmemory.com
is just a copy of GH. So I figured out it's a copy of this issue. And that is more conclusive. That is to say, the issue opener, ohmycloud, closes it with the conclusion:
It's actually a access deny error
Hmmm. Really?
Please consider investigating that angle, and perhaps editing your question to summarize your conclusions. But please read on first, because there are reasons to doubt it's an access error, as follows.
Windows System Error 123
My next research angle was determining exactly what the error code means.
I figured out the read from dirhandle failed:
was from MoarVM, and that showed the error code was from GetLastError()
, and I figured out that is from the Windows API, and I arrived at this reference entry:
The filename, directory name, or volume label syntax is incorrect.
Hmm. Why did ohmycloud talk about an access error?
We should probably try to investigate whether it is "just" invalid syntax rather than something else like an access error.
Please try the following, and consider whether it's worth pasting some of your results, at least one of them, into your question:
say $*PROGRAM.dirname.raku;
chdir $*PROGRAM.dirname;
say $*PROGRAM.dirname.IO.raku;
A last chance long odds dark horse?
While googling a tad more widely (dropping the 123
) I found another match that might be of interest.
(It actually does have the same error, so I don't understand why it wasn't listed by the first google I tried, but whatever.)
It's this 2016 comment by nick cygx
on the #moarvm channel
eventually dies with a SORRY: read from dirhandle failed: 123
This is also on Windows. One can tell that due to the error message but it's also confirmed later that same day on the IRC channel:
that "read from dirhandle failed" thing happens inside a windows ifdefed block
Afaict, cygx is saying they got the error message for the test case in the bug Class fails to smartmatch against role defined in module.
jnthn's response to this failure was:
That...makes no sense o.O
(Which is a pretty good summary of your SO.)
jnthn's said one other thing about cygx's error:
I've put off fixing up hyper/race for months already. :)
So, perhaps, or more lyrically as a last chance long shot dark horse, maybe there's some hyper
/race
related problem within MoarVM's guts that manifests on Windows in relation to module loading?
It would be helpful if you could try the "Minimal testcase" in the bug report. Do you get the 123
error?
If you do, then perhaps (even longer shot) it's worth someone trying to get in touch with cygx? Unfortunately the nick cygx
last appeared on #moarvm in 2019. So I did a google for cygx raku
. I found an 8 month old comment about Raku under that nick from 8 months ago. (Which I see I replied to ineptly. Sorry, cygx.)
@ugexe's comments
Their first comment is:
Pointing a use lib ...
at [a directory containing] files your current user doesn't have access to isn't a good idea.
That suggests you would best make sure the directory you're pointing lib
at is not a directory such as C:\Users\suman
because, in the general case, that may include files your Rakudo compiler can't access. (Whether this is the case depends on your system setup and what files you have, but the simple solution is to make sure you only point lib
at a directory dedicated to Raku code.)
Their last comment (below this answer) is a link to a gist with lines like this:
C:\Users\ugexe>raku --ll-exception -e "use lib '.'; use Test;"
read from dirhandle failed: 123
at SETTING::src/core.c/Rakudo/Internals.pm6:1345 (C:\Users\ugexe\.rakudobrew\moar-2021.10\install\share\perl6\runtime/CORE.c.setting.moarvm:next)
from SETTING::src/core.c/Rakudo/Internals.pm6:1374
.
.
.
I don't know how to interpret this gist, but I can see that their gist:
Shows them producing the same Windows System Error (123
) with nothing but a use Test;
;
Shows paths that, if passed to Windows, would presumably be syntactically invalid (C:\Users\ugexe\.rakudobrew\moar-2021.10\install\share\perl6\runtime/CORE.c.setting.moarvm:next
). My guess is that they're not passed to Windows, but instead just constructed that way as part of displaying the error. But that is just a guess.