Repository navigation
Error installing tar.gz with python 3.13.4-3.14.0(with pip >=24.1) when %TMP% folder is in an ImDisk created RAMDISK volume #140297
Description
Activity
- addedtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
on Oct 18, 2025 This is likely a problem with ImDisk specifically, not RAM disks in general.
ImDisk does not support volumes properly. E.g. it "fakes" the
X:drive instead of creating a proper mount. This breaks Windows API functions such asGetFinalPathNameByHandle, which is used byPath.resolvein strict mode.I'm aware of ImDisk's peculiarities, as the issue doesn't exist in SoftPerfect's inferior RamDisk solution.
But I don't think this particular issue is with ImDisk, as Python 3.13.3 works fine(with ImDisk) with all pip versions. See the table above, and the discussion thread I've linked.
Something changed between py 3.13.3 and 3.13.4 that's causing this.- added3.14bugs and security fixesbugs and security fixes3.15bugs and security fixesbugs and security fixes
on Oct 18, 2025 But I don't think this particular issue is with ImDisk, as Python 3.13.3 works fine(with ImDisk) with all pip versions
I expect what's changed is usage of an API that breaks with ImDisk in a bugfix change. Searching online it seems like it is a common issue to get
Incorrect functionwith ImDisk. So it does seem like an issue with ImDisk compatibility that surfaced because of a bugfix change.I ran a simple test where I created the file
X:\test.txt, whereX:\is a RAM disk created with ImDisk. Then I created and ran a small C program that callsGetFinalPathNameByHandleW()with a handle toX:\test.txt. It indeed failed withGetLastError()equal to1(Incorrect function). So this is an ImDisk bug. What likely happened is that a change in Python 3.13.4 resulted inGetFinalPathNameByHandleW()getting called in your situation, while this function was not called in previous versions of Python.Reacted by Emma SmithYeah
GetFinalPathNameByHandleWis called byos.path.realpath, which is part of a security fix (#135064) for tarfile that was done in June.I don't think there's much for us to do here.
- addedpendingThe issue will be closed if no feedback is providedThe issue will be closed if no feedback is provided
on Oct 21, 2025 It might be worth adding a fallback in
realpath(perhaps with a noisy warning, if there's actual security impact). "Incorrect function" really does mean "the driver doesn't implement this", which is a legitimate result that's independent of the incoming data (as in, a malicious archive can't cause winerror=1 here).I wouldn't trust ImDisk to identify themselves in any specific way we can detect, but there's probably a really slow path we can fall back to in
realpaththat will at least work.Reacted by barkoderthere's probably a really slow path we can fall back to in
realpaththat will at least work.I would appreciate that please. Thanks!
Bug report
Bug description:
Please see discussion at adang1345/PythonVista#56 (comment)
python versions
3.13.4-3.14.0don't like it when%TMP%folder is in ImDisk created RAMDISK volumes.I've confirmed Python 3.13.3 works when
%TMP%folder is in ImDisk created RAMDISKs.To reproduce.
Run Windows 11.
Install https://sourceforge.net/projects/imdisk-toolkit/files/20220301/ (20220301 is the version I'm using. There are newer versions as well but I've not attempted to reproduce the bug in those versions).
Create an NTFS or exFAT RAMDISK of 1024MB. Say drive letter
X:First to confirm it used to work with 3.13.3
Install https://www.python.org/ftp/python/3.13.3/python-3.13.3-amd64.exe
Run cmd.
Now to confirm it doesn't work with 3.13.4
Install https://www.python.org/ftp/python/3.13.4/python-3.13.4-amd64.exe
Run cmd.
I tested every version 3.13.4 onwards. They all fail.
Something changed between 3.13.3 and 3.13.4 that is causing this issue.
The reason I use RAMDISKs is to minimize wear on my disks. So I would appreciate any help. Thanks!
From @adang1345 in that discussion
Basically,
CPython versions tested on:
3.14
Operating systems tested on:
Windows