code: def test_ray_shutdown_then_call_list(
      short_gcs_publish_timeout, shutdown_only
  ):
      """Make sure ray will not kill cpython when using unrecognized ObjectId"""
      # Set include_dashboard=False to have faster startup.
      ray.init(num_cpus=1, include_dashboard=False)
  
      my_ref = ray.put("anystring")
  
      @ray.remote
      def f(s):
          print(s)
  
      ray.shutdown()
  
      ray.init(num_cpus=1, include_dashboard=False)
      with pytest.raises(
          ValueError, match="Ray object whose owner is unknown"
      ):
          f.remote([my_ref])  # This would cause full CPython death.
  
      ray.shutdown()
      wait_for_condition(
          lambda: len(get_all_ray_worker_processes()) == 0
      )
  
imports: import sys
  import time
  import platform
  import os
  import signal
  import multiprocessing
  import pytest
  import ray
  import psutil
  from ray._private.test_utils import wait_for_condition, run_string_as_driver_nonblocking
  from ray.util.state import get_worker, list_tasks
  from ray.util.scheduling_strategies import PlacementGroupSchedulingStrategy
label_desc: Use image node_id 5 for calling a global function with example usage: test_ray_shutdown_then_call_list(short_gcs_publish_timeout, shutdown_only) without return types