Skip to content

Failed to play in world model due to GLX error #42

@LYK-love

Description

@LYK-love

Thanks for sharing your work. So I'm encountering a GLX error when trying to play in world model, which is specified via command

python src/play.py --pretrained

on a remote Ubuntu 22.04 headless server, to which I connected from my local Ubuntu 22.04 machine with an GTX 1660 GPU (quite old one).

I got following output

Controls (general):

⏎ : reset env
. : pause/unpause
e : step-by-step (when paused)

Controls (play mode):

m : controller (policy/human)
↑ : imagination horizon (+1)
↓ : imagination horizon (-1)
→ : next environment (wm → test → train)
← : prev environment (wm ← test ← train)

Environment actions:

⎵ : fire
w : up
d : right
a : left
s : down
w + d : upright
w + a : upleft
s + d : downright
s + a : downleft
w + ⎵ : upfire
d + ⎵ : rightfire
a + ⎵ : leftfire
s + ⎵ : downfire
w + d + ⎵ : uprightfire
w + a + ⎵ : upleftfire
s + d + ⎵ : downrightfire
s + a + ⎵ : downleftfire


X Error of failed request:  BadAlloc (insufficient resources for operation)
  Major opcode of failed request:  152 (GLX)
  Minor opcode of failed request:  5 (X_GLXMakeCurrent)
  Serial number of failed request:  0
  Current serial number in output stream:  161
Process Worker<AsyncVectorEnv>-0:
(diamond) luyukuan@longjing-2:~/projects/diamond$ Traceback (most recent call last):
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/site-packages/gymnasium/vector/async_vector_env.py", line 626, in _worker_shared_memory
    command, data = pipe.recv()
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/connection.py", line 250, in recv
    buf = self._recv_bytes()
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/connection.py", line 414, in _recv_bytes
    buf = self._recv(4)
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/connection.py", line 383, in _recv
    raise EOFError
EOFError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/site-packages/gymnasium/vector/async_vector_env.py", line 685, in _worker_shared_memory
    pipe.send((None, False))
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/connection.py", line 206, in send
    self._send_bytes(_ForkingPickler.dumps(obj))
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/connection.py", line 411, in _send_bytes
    self._send(header + buf)
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/connection.py", line 368, in _send
    n = write(self._handle, buf)
BrokenPipeError: [Errno 32] Broken pipe
Process Worker<AsyncVectorEnv>-0:
Traceback (most recent call last):
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/site-packages/gymnasium/vector/async_vector_env.py", line 626, in _worker_shared_memory
    command, data = pipe.recv()
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/connection.py", line 250, in recv
    buf = self._recv_bytes()
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/connection.py", line 414, in _recv_bytes
    buf = self._recv(4)
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/connection.py", line 383, in _recv
    raise EOFError
EOFError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/site-packages/gymnasium/vector/async_vector_env.py", line 685, in _worker_shared_memory
    pipe.send((None, False))
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/connection.py", line 206, in send
    self._send_bytes(_ForkingPickler.dumps(obj))
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/connection.py", line 411, in _send_bytes
    self._send(header + buf)
  File "/scorpio/home/luyukuan/miniconda3/envs/diamond/lib/python3.10/multiprocessing/connection.py", line 368, in _send
    n = write(self._handle, buf)
BrokenPipeError: [Errno 32] Broken pipe


I connected to the server via ssh -Y and can run glxgears command via ssh successfully, though. I've googled a lot but there seems to be no posts about this. I personally suspect that maybe it's my local GPU's problem bcz it's too old and only has 6GB VRAM. (My remote server has a RTX 3090 GPU) But I can't quickly verify it as I don't have other GPUs currently. Can you give me some advice?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions