Skip to content

Stack overflow in DataLoader2Iterator.__getattr__ #1000

@albertz

Description

@albertz

🐛 Describe the bug

Crash, seg fault, stack overflow, infinite recursion:

Current thread 0x0000000102f48580 (most recent call first):
  File "/Users/az/.local/lib/python3.9/site-packages/torchdata/dataloader2/dataloader2.py", line 80 in __getattr__
  File "/Users/az/.local/lib/python3.9/site-packages/torchdata/dataloader2/dataloader2.py", line 80 in __getattr__
  File "/Users/az/.local/lib/python3.9/site-packages/torchdata/dataloader2/dataloader2.py", line 80 in __getattr__
  File "/Users/az/.local/lib/python3.9/site-packages/torchdata/dataloader2/dataloader2.py", line 80 in __getattr__
  File "/Users/az/.local/lib/python3.9/site-packages/torchdata/dataloader2/dataloader2.py", line 80 in __getattr__
  File "/Users/az/.local/lib/python3.9/site-packages/torchdata/dataloader2/dataloader2.py", line 80 in __getattr__
  File "/Users/az/.local/lib/python3.9/site-packages/torchdata/dataloader2/dataloader2.py", line 80 in __getattr__
...

In DataLoader2Iterator:

    def __getattr__(self, name):
        """
        To delegate operations to ``dataloader._datapipe_iter``.
        """
        if self.dataloader._datapipe_iter is None:
            raise AttributeError
        return getattr(self.dataloader._datapipe_iter, name)

I'm not sure exactly how, but this seems to get into some infinite recursion.

This is via the PyCharm debugger. The PyCharm debugger dynamically calls dir and getattr on some objects to visualize them. Likely it tried to access some attrib, which caused this.

Versions

PyTorch version: 2.0.0.dev20230208
Is debug build: False
CUDA used to build PyTorch: None
ROCM used to build PyTorch: N/A

OS: macOS 12.6.3 (arm64)
GCC version: Could not collect
Clang version: 14.0.0 (clang-1400.0.29.202)
CMake version: Could not collect
Libc version: N/A

Python version: 3.9.7 | packaged by conda-forge | (default, Sep 29 2021, 19:24:02)  [Clang 11.1.0 ] (64-bit runtime)
Python platform: macOS-12.6.3-arm64-arm-64bit
Is CUDA available: False
CUDA runtime version: No CUDA
CUDA_MODULE_LOADING set to: N/A
GPU models and configuration: No CUDA
Nvidia driver version: No CUDA
cuDNN version: No CUDA
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

CPU:
Apple M1 Pro

Versions of relevant libraries:
[pip3] evotorch==0.1.0
[pip3] mypy==0.991
[pip3] mypy-extensions==0.4.3
[pip3] numpy==1.22.4
[pip3] torch==2.0.0.dev20230208
[pip3] torchaudio==2.0.0.dev20230208
[pip3] torchdata==0.6.0.dev20230208
[pip3] torchvision==0.15.0.dev20230208
[conda] Could not collect

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions