# Return data of ray.get crashes program

**URL:** <https://discuss.ray.io/t/return-data-of-ray-get-crashes-program/3758>\
**Category:** Ray Core\
**Created:** [October 8, 2021, 3:45pm UTC](https://discuss.ray.io/t/return-data-of-ray-get-crashes-program/3758 "2021-10-08T15:45:07Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![shadzex](https://avatars.discourse-cdn.com/v4/letter/s/48db29/32.png) [@shadzex](https://discuss.ray.io/u/shadzex)\
**Post date:** [October 8, 2021, 3:45pm UTC](https://discuss.ray.io/t/return-data-of-ray-get-crashes-program/3758/1 "2021-10-08T15:45:07Z")

</div>

Hi, I got a problem with ray.get.  
I tried to do my best but don’t know how to solve it.  
This is my first question so there may be some insufficient explanation for my situation.

```auto
import ray

import gym
import time

from queue import Queue

@ray.remote
class SharedStorage:
    def __init__ (self):
        self.storage = Queue()

    def append(self, item):
        for i in item:
            self.storage.put(i)

    def get(self):
        return [self.storage.get() for _ in range(self.storage.qsize())]

@ray.remote
class Actor:
    def __init__ (self, shared_storage):
        self.shared_storage = shared_storage
    def actor(self):
        env = gym.make('MsPacman-v0')

        state = env.reset()

        print(env.observation_space.shape)

        for i in range(1000000):

            action = env.action_space.sample()
            state, reward, done, _ = env.step(action)

            self.shared_storage.append.remote([[state, reward, done, state]])

            if done:
                state = env.reset()

class Runner:
    def __init__ (self):
        ray.init()
        self.num = 0
        self.buffer = []
        self.shared_storage = SharedStorage.remote()
        self.actors = [Actor.remote(self.shared_storage) for _ in range(1)]

    def learner(self):
        [actor.actor.remote() for actor in self.actors]
        for i in range(100000000):
            storage = ray.get(self.shared_storage.get.remote())

            for t in storage:
                self.buffer.append(t)

            print(len(self.buffer))

        ray.shutdown()

runner = Runner()

runner.learner()

```

My project code has the same structure with this code, with the same error when using visual observation.  
It works well in low-dimension vector observation, but in visual observation, error like below occurs.

```auto
Traceback (most recent call last):
  File "C:/Users/iv112/PycharmProjects/rlrobot/test.py", line 64, in <module>
    runner.learner()
  File "C:/Users/iv112/PycharmProjects/rlrobot/test.py", line 52, in learner
    storage = ray.get(self.shared_storage.get.remote())
  File "C:\Users\iv112\Anaconda3\envs\RL\lib\site-packages\ray\_private\client_mode_hook.py", line 89, in wrapper
    return func(*args, **kwargs)
  File "C:\Users\iv112\Anaconda3\envs\RL\lib\site-packages\ray\worker.py", line 1621, in get
    raise value.as_instanceof_cause()
ray.exceptions.RayTaskError: ray::SharedStorage.get() (pid=13648, ip=172.30.1.27, repr=<test.SharedStorage object at 0x0000026C5DB64EE0>)
  File "python\ray\_raylet.pyx", line 614, in ray._raylet.execute_task
  File "python\ray\_raylet.pyx", line 615, in ray._raylet.execute_task
  File "python\ray\_raylet.pyx", line 1785, in ray._raylet.CoreWorker.store_task_outputs
  File "python\ray\_raylet.pyx", line 162, in ray._raylet.check_status
ray.exceptions.RaySystemError: System error: Unknown error
(pid=None) [2021-10-09 00:29:55,194 C 5756 4052] dlmalloc.cc:121: Check failed: *handle != nullptr CreateFileMapping() failed. GetLastError() = 1450
(pid=None) ***StackTrace Information***
(pid=None) 
(pid=13648) Traceback (most recent call last):
(pid=13648) File "python\ray\_raylet.pyx", line 614, in ray._raylet.execute_task
(pid=13648) File "python\ray\_raylet.pyx", line 615, in ray._raylet.execute_task
(pid=13648) File "python\ray\_raylet.pyx", line 1785, in ray._raylet.CoreWorker.store_task_outputs
(pid=13648) File "python\ray\_raylet.pyx", line 162, in ray._raylet.check_status
(pid=13648) ray.exceptions.RaySystemError: System error: Unknown error
(pid=13648) 
(pid=13648) During handling of the above exception, another exception occurred:
(pid=13648) 
(pid=13648) Traceback (most recent call last):
(pid=13648) File "python\ray\_raylet.pyx", line 684, in ray._raylet.task_execution_handler
(pid=13648) File "python\ray\_raylet.pyx", line 524, in ray._raylet.execute_task
(pid=13648) File "python\ray\_raylet.pyx", line 642, in ray._raylet.execute_task
(pid=13648) File "C:\Users\iv112\Anaconda3\envs\RL\lib\site-packages\ray\_private\utils.py", line 110, in push_error_to_driver
(pid=13648) worker.core_worker.push_error(job_id, error_type, message, time.time())
(pid=13648) File "python\ray\_raylet.pyx", line 1902, in ray._raylet.CoreWorker.push_error
(pid=13648) File "python\ray\_raylet.pyx", line 162, in ray._raylet.check_status
(pid=13648) ray.exceptions.RaySystemError: System error: Unknown error
(pid=13648) 
(pid=13648) During handling of the above exception, another exception occurred:
(pid=13648) 
(pid=13648) Traceback (most recent call last):
(pid=13648) File "python\ray\_raylet.pyx", line 706, in ray._raylet.task_execution_handler
(pid=13648) File "C:\Users\iv112\Anaconda3\envs\RL\lib\site-packages\ray\_private\utils.py", line 110, in push_error_to_driver
(pid=13648) worker.core_worker.push_error(job_id, error_type, message, time.time())
(pid=13648) File "python\ray\_raylet.pyx", line 1902, in ray._raylet.CoreWorker.push_error
(pid=13648) File "python\ray\_raylet.pyx", line 162, in ray._raylet.check_status
(pid=13648) ray.exceptions.RaySystemError: System error: Unknown error
(pid=13648) Exception ignored in: 'ray._raylet.task_execution_handler'
(pid=13648) Traceback (most recent call last):
(pid=13648) File "python\ray\_raylet.pyx", line 706, in ray._raylet.task_execution_handler
(pid=13648) File "C:\Users\iv112\Anaconda3\envs\RL\lib\site-packages\ray\_private\utils.py", line 110, in push_error_to_driver
(pid=13648) worker.core_worker.push_error(job_id, error_type, message, time.time())
(pid=13648) File "python\ray\_raylet.pyx", line 1902, in ray._raylet.CoreWorker.push_error
(pid=13648) File "python\ray\_raylet.pyx", line 162, in ray._raylet.check_status
(pid=13648) ray.exceptions.RaySystemError: System error: Unknown error
(pid=13648) [2021-10-09 00:29:55,216 C 13648 12736] core_worker.cc:2170: Check failed: _s.ok() Bad status: IOError: Unknown error
(pid=13648) ***StackTrace Information***
(pid=13648) 
(pid=13648) Windows fatal exception: access violation
(pid=13648) 
(pid=13648) Stack (most recent call first):
(pid=13648) File "C:\Users\iv112\Anaconda3\envs\RL\lib\site-packages\ray\worker.py", line 428 in main_loop
(pid=13648) File "C:\Users\iv112\Anaconda3\envs\RL\lib\site-packages\ray\workers/default_worker.py", line 212 in <module>
[2021-10-09 00:29:55,713 E 4016 14232] raylet_client.cc:159: IOError: Unknown error [RayletClient] Failed to disconnect from raylet.

Process finished with exit code 1

```

I found this error occurs when i get data from ray.get and append to the list at the learner function.  
Program works well for a few minutes, but when it reaches to some point, program crashes.  
The error does not happen when i use ray.put before adding to the shared memory at the actor function and make it to ray reference object.  
But when i use ray.get to the reference object i got, and append it to the list, that error occurs again.

I thought ray.get just returns ray reference object’s content, but it seems not.  
I want to know how this happens and how to solve it.

Thank you for reading this question.

---

<div class="post-metadata">

**Author:** ![shadzex](https://avatars.discourse-cdn.com/v4/letter/s/48db29/32.png) [@shadzex](https://discuss.ray.io/u/shadzex)\
**Post date:** [October 9, 2021, 3:21am UTC](https://discuss.ray.io/t/return-data-of-ray-get-crashes-program/3758/2 "2021-10-09T03:21:17Z")

</div>

I solved the problem, partially.  
It seems stacking data from another actor violated memory, so when the stacked memory reaches to some threshold, program crashes.  
So i just deepcopied the data transferred, not to stack data from another actors, then it worked.  
However, it makes program much slower than before, so i want to know about another way to solve it, could you please tell me about another solution?  
Thank you.
