-
Notifications
You must be signed in to change notification settings - Fork 29.9k
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
Possible Windows Node 6 regression with spawn and a substed drive #6500
Comments
This may be related to #5950. |
Wow! I'm amazed. |
@xzyfer can you rename the issue to "substed" ? (or reference "drive created by subst.exe") - only few MS-DOS die-hards like me remember, what a "substed drive" is. |
updated |
Node 6.x has trouble probably including modules from the substed drivers. Since we use use subst only to set symbols paths in the PDB file, let's revert to the C: drive when doing tests. Workaround for: nodejs/node#6500
Node 6.x has trouble including modules from MS-DOS drives created with subst.exe. Since we use use subst only to set symbols paths in the PDB file, let's revert to the C: drive when doing tests. Workaround for: nodejs/node#6500
Node 6.x has trouble including modules from MS-DOS drives created with subst.exe. Since we use use subst only to set symbols paths in the PDB file, let's revert to the C: drive when doing tests. Workaround for: nodejs/node#6500
Node 6.x has trouble including modules from MS-DOS drives created with subst.exe. Since we use use subst only to set symbols paths in the PDB file, let's revert to the C: drive when doing tests. Workaround for: nodejs/node#6500 [ci skip]
Node 6.x has trouble including modules from MS-DOS drives created with subst.exe. Since we use use subst only to set symbols paths in the PDB file, let's revert to the C: drive when doing tests. Workaround for: nodejs/node#6500
Node 6.x has trouble including modules from MS-DOS drives created with subst.exe. Since we use use subst only to set symbols paths in the PDB file, let's revert to the C: drive when doing tests. Workaround for: nodejs/node#6500
Nice find @saper |
Yep, de1dc0a fixed another bug but led to some other regressions. There is work underway to find a workaround that would address both sets of concerns but it's non-trivial. This is queued up already for @nodejs/ctc discussion this week to see if we need to revert or find another path forward. |
Is
If you |
Subst is the ancient feature, coming from MSDOS times. It is more like Unix and yes, it failes when you are "on" a substed drive. Compiling from C:\projects works. |
Thanks @saper. In the DOS days I'm sure I used So a If this same example were run with node 5.x or earlier, does |
Yes, all the tests ran correctly.
|
@saper Okay this should be fixable. To your point, libuv Can you please confirm that if you use windows symlinks instead of |
Well, yes. But in general I avoid using |
Alright then, this appears to be a Windows libuv realpath issue, not a module resolution problem. |
No, that's not true. The fix in the module is incorrect. It aims at improving |
After the Edit: In the new node 6.0.0 module resolution scheme the main script is still |
So, realpath seems to work fine here. |
Okay, there goes that theory. If the same test is run with |
|
I see. libuv handles |
Would it possible to get the value of |
|
I think this problem is pretty easy to see from the
The above lines run in a fresh copy of Then a module is included, and
Now we take another code path de1dc0a#diff-d1234a869b3d648ebfcdce5a76747d71R119 and we are not converting the path to the One True Path. Therefore another attempt to load the binary module is undertook, which brings a whole thing down. |
/cc @alexanderGugel |
See: #6537 |
Could you just add an additional |
I'd be +1 to removing the |
@dlongley node needs to use realpath not to try to load the same binary module twice. It's clunky, but that's how it currently works... |
Then we should only do |
@saper Earlier in this thread I asked if the same test case worked with node 6.0.0 with a symlink instead of |
I have not tried to reproduce it with symlinks before, I have only used But yesterday I wrote a test case for node to check for this issue and I have made the test case use |
@xzyfer can you please try v6.2.0 and see if the problem still exists? Thanks! |
This reverts commit 15fe42e to assert nodejs/node#6500 is resolved in Node v6.2.0.
This reverts commit 15fe42e to assert nodejs/node#6500 is resolved in Node v6.2.0.
This reverts commit 15fe42e to assert nodejs/node#6500 is resolved in Node v6.2.0.
@evanlucas I can confirm this is fixed in Node v6.2.0 in both my reduced reproduction and in the larger node-sass ci. |
Glad to hear. Closing as this has been fixed. Thanks!! |
This was originally removed in sass#1514 to work around nodejs/node#6500 which has since been resolved. This isn't playing nice with our npm cache in CI because we're changing the current path after running npm install.
v6.0.0
Windows 32 and 64 bit
I've noticed a minor breaking change in either
child_process.spawn
orpath.resolve
(currently unclear), on Windows with Node 6. This issue appears to crop up when a Node script is execute from aSUBST
'd path.The production steps are tricky so I have created a reproduction in a repo that runs its tests in AppVeyor.
The text was updated successfully, but these errors were encountered: