mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
[inductor] fix munge_exc not support windows path (#134348)
Windows file path use `\` as delimiter, it is also a escape character. We need translate all path `\` to `/`. which like Linux. Reproduce UT: ```cmd pytest test\dynamo\test_higher_order_ops.py -v -k test_vmap_grad_vmap_guard_fail ``` Error msg: ```cmd ________________________________________________________________________________________________________ HigherOrderOpVmapGuardTests.test_vmap_grad_vmap_guard_fail _________________________________________________________________________________________________________ Traceback (most recent call last): File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\site-packages\torch\testing\_internal\logging_utils.py", line 89, in test_fn fn(self, records) File "D:\xu_git\dnnl_cb\pytorch\test\dynamo\test_higher_order_ops.py", line 2714, in test_vmap_grad_vmap_guard_fail munge_exc(record.getMessage()), File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\site-packages\torch\testing\_internal\common_utils.py", line 5252, in munge_exc s = re.sub(file, os.path.basename(file), s) File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\re.py", line 209, in sub return _compile(pattern, flags).sub(repl, string, count) File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\re.py", line 303, in _compile p = sre_compile.compile(pattern, flags) File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\sre_compile.py", line 788, in compile p = sre_parse.parse(p, flags) File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\sre_parse.py", line 955, in parse p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0) File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\sre_parse.py", line 444, in _parse_sub itemsappend(_parse(source, state, verbose, nested + 1, File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\sre_parse.py", line 526, in _parse code = _escape(source, this, state) File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\sre_parse.py", line 370, in _escape raise source.error("incomplete escape %s" % escape, len(escape)) re.error: incomplete escape \x at position 2 To execute this test, run the following from the base repo dir: python test\dynamo\test_higher_order_ops.py HigherOrderOpVmapGuardTests.test_vmap_grad_vmap_guard_fail This message can be suppressed by setting PYTORCH_PRINT_REPRO_ON_FAILURE=0 --------------------------------------------------------------------------------------------------------------------------- Captured stdout call ---------------------------------------------------------------------------------------------------------------------------- frames [('total', 2), ('ok', 2)] inductor [] inline_call [] stats [('calls_captured', 38), ('unique_graphs', 2)] --------------------------------------------------------------------------------------------------------------------------- Captured stderr call ---------------------------------------------------------------------------------------------------------------------------- V0824 01:29:00.148000 27840 torch\_dynamo\guards.py:2787] [0/1] [__recompiles] Recompiling function fn in D:\xu_git\dnnl_cb\pytorch\test\dynamo\test_higher_order_ops.py:2699 V0824 01:29:00.148000 27840 torch\_dynamo\guards.py:2787] [0/1] [__recompiles] triggered by the following guard failure(s): V0824 01:29:00.148000 27840 torch\_dynamo\guards.py:2787] [0/1] [__recompiles] - 0/0: torch._functorch.pyfunctorch.compare_functorch_state([('Vmap', 1, 'error')]) # _dynamo\output_graph.py:479 in init_ambient_guards ========================================================================================================================== short test summary info ========================================================================================================================== FAILED [0.7452s] test/dynamo/test_higher_order_ops.py::HigherOrderOpVmapGuardTests::test_vmap_grad_vmap_guard_fail - re.error: incomplete escape \x at position 2 ``` Local test passed: <img width="860" alt="image" src="https://github.com/user-attachments/assets/90f0d780-0639-4c03-8d7c-6f227c93a3fc"> Pull Request resolved: https://github.com/pytorch/pytorch/pull/134348 Approved by: https://github.com/jansel
This commit is contained in:
@ -72,6 +72,7 @@ import torch.backends.xnnpack
|
||||
import torch.cuda
|
||||
from torch import Tensor
|
||||
from torch._C import ScriptDict, ScriptList # type: ignore[attr-defined]
|
||||
from torch._dynamo.trace_rules import _as_posix_path
|
||||
from torch._utils_internal import get_writable_path
|
||||
from torch.nn import (
|
||||
ModuleDict,
|
||||
@ -96,14 +97,12 @@ from torch.testing._comparison import not_close_error_metas
|
||||
from torch.testing._internal.common_dtype import get_all_dtypes
|
||||
from torch.utils._import_utils import _check_module_exists
|
||||
import torch.utils._pytree as pytree
|
||||
|
||||
try:
|
||||
import pytest
|
||||
has_pytest = True
|
||||
except ImportError:
|
||||
has_pytest = False
|
||||
|
||||
|
||||
def freeze_rng_state(*args, **kwargs):
|
||||
return torch.testing._utils.freeze_rng_state(*args, **kwargs)
|
||||
|
||||
@ -5233,7 +5232,8 @@ def munge_exc(e, *, suppress_suffix=True, suppress_prefix=True, file=None, skip=
|
||||
if file is None:
|
||||
file = inspect.stack()[1 + skip].filename # skip one frame
|
||||
|
||||
s = str(e)
|
||||
file = _as_posix_path(file)
|
||||
s = _as_posix_path(str(e))
|
||||
|
||||
# Remove everything that looks like stack frames in NOT this file
|
||||
def repl_frame(m):
|
||||
@ -5249,9 +5249,8 @@ def munge_exc(e, *, suppress_suffix=True, suppress_prefix=True, file=None, skip=
|
||||
s = re.sub(r' File "([^"]+)", line \d+, in (.+)\n( .+\n( +[~^]+ *\n)?)+', repl_frame, s)
|
||||
s = re.sub(r"line \d+", "line N", s)
|
||||
s = re.sub(r".py:\d+", ".py:N", s)
|
||||
s = re.sub(file, os.path.basename(file), s)
|
||||
s = re.sub(os.path.join(os.path.dirname(torch.__file__), ""), "", s)
|
||||
s = re.sub(r"\\", "/", s) # for Windows
|
||||
s = re.sub(file, _as_posix_path(os.path.basename(file)), s)
|
||||
s = re.sub(_as_posix_path(os.path.join(os.path.dirname(torch.__file__), "")), "", s)
|
||||
if suppress_suffix:
|
||||
s = re.sub(r"\n*Set TORCH_LOGS.+", "", s, flags=re.DOTALL)
|
||||
s = re.sub(r"\n*You can suppress this exception.+", "", s, flags=re.DOTALL)
|
||||
|
Reference in New Issue
Block a user