Using o3d.t.geometry.TriangleMesh.from_legacy in PyTorch Dataset Class Gives Segmentation Fault Error
- Dominant language
- C++
- Stars
- 14k
- Forks
- 2.6k
- Avg merge
- 5d 18h
- Merged PRs (30d)
- 6
Description
### Checklist
- [X] I have searched for [similar issues](https://github.com/isl-org/Open3D/issues).
- [X] For Python issues, I have tested with the [latest development wheel](http://www.open3d.org/docs/latest/getting_started.html#development-version-pip).
- [X] I have checked the [release documentation](http://www.open3d.org/docs/release/) and the [latest documentation](http://www.open3d.org/docs/latest/) (for `master` branch).
### Describe the issue
I would like to process a TriangleMesh in my PyTorch Dataset class, so I create my mesh using ```o3d.t.geometry.TriangleMesh.from_legacy``` following the instructions in this [page](http://www.open3d.org/docs/latest/tutorial/geometry/ray_casting.html)
```
mesh_o3d = o3d.io.read_triangle_mesh(path)
print("Mesh loaded.")
mesh_o3d = o3d.t.geometry.TriangleMesh.from_legacy(mesh_o3d)
print("Mesh created from legacy.")
```
My PyTorch Dataset class, inlcuding these two lines, runs without any problem, but only when I set ```num_workers=0```, i.e., multiprocessing is not enabled for the Dataset class.
However, if I set =1 (or any number >1), the message ```"Mesh created from legacy."``` is not printed out, and it seems that the line ```mesh_o3d = o3d.t.geometry.TriangleMesh.from_legacy(mesh_o3d)``` is giving a segmentation error:
### Error message
```
Mesh loaded.
ERROR: Unexpected segmentation fault encountered in worker.
Traceback (most recent call last):
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 1120, in _try_get_data
data = self._data_queue.get(timeout=timeout)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/multiprocessing/queues.py", line 113, in get
if not self._poll(timeout):
File "/root/anaconda3/envs/diff_dev/lib/python3.10/multiprocessing/connection.py", line 257, in poll
return self._poll(timeout)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/multiprocessing/connection.py", line 424, in _poll
r = wait([self], timeout)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/multiprocessing/connection.py", line 931, in wait
ready = selector.select(timeout)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/selectors.py", line 416, in select
fd_event_list = self._selector.poll(timeout)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/torch/utils/data/_utils/signal_handling.py", line 66, in handler
_error_if_any_worker_fails()
RuntimeError: DataLoader worker (pid 221529) is killed by signal: Segmentation fault.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/workspace/diffusion/main.py", line 21, in
cli_main()
File "/workspace/diffusion/main.py", line 10, in cli_main
cli = LightningCLI(L.LightningModule, L.LightningDataModule,
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/cli.py", line 353, in __init__
self._run_subcommand(self.subcommand)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/cli.py", line 642, in _run_subcommand
fn(**fn_kwargs)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/trainer/trainer.py", line 531, in fit
call._call_and_handle_interrupt(
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/trainer/call.py", line 42, in _call_and_handle_interrupt
return trainer_fn(*args, **kwargs)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/trainer/trainer.py", line 570, in _fit_impl
self._run(model, ckpt_path=ckpt_path)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/trainer/trainer.py", line 975, in _run
results = self._run_stage()
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/trainer/trainer.py", line 1018, in _run_stage
self.fit_loop.run()
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/loops/fit_loop.py", line 201, in run
self.advance()
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/loops/fit_loop.py", line 354, in advance
self.epoch_loop.run(self._data_fetcher)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/loops/training_epoch_loop.py", line 133, in run
self.advance(data_fetcher)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/loops/training_epoch_loop.py", line 189, in advance
batch = next(data_fetcher)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/loops/fetchers.py", line 136, in __next__
self._fetch_next_batch(self.dataloader_iter)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/loops/fetchers.py", line 150, in _fetch_next_batch
batch = next(iterator)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/utilities/combined_loader.py", line 284, in __next__
out = next(self._iterator)
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/lightning/pytorch/utilities/combined_loader.py", line 65, in __next__
out[i] = next(self.iterators[i])
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 628, in __next__
data = self._next_data()
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 1316, in _next_data
idx, data = self._get_data()
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 1282, in _get_data
success, data = self._try_get_data()
File "/root/anaconda3/envs/diff_dev/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 1133, in _try_get_data
raise RuntimeError('DataLoader worker (pid(s) {}) exited unexpectedly'.format(pids_str)) from e
RuntimeError: DataLoader worker (pid(s) 221529) exited unexpectedly
```
### Expected behavior
_No response_
### Open3D, Python and System information
```markdown
- Operating system: Ubuntu 20.04
- Python version: Python 3.10
- Open3D version: 0.17.0+ff22900c9
- System architecture: x86
- Is this a remote workstation?: yes
- How did you install Open3D?: pip or build from source (both inside a conda env)
- Compiler version (if built from source): gcc 9.4.0
```
### Additional information
Versions of related packages:
- pytorch-lightning 2.0.3
- torch 1.13.1+cu116 or 2.0.0
- torchvision 0.14.1+cu116
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.