code: def test_shutdown_deadlock(self):
      # Test that the pool calling shutdown do not cause deadlock
      # if a worker fails after the shutdown call.
      self.executor.shutdown(wait=True)
      with self.executor_type(
          max_workers=2, mp_context=self.get_context()
      ) as executor:
          self.executor = executor  # Allow clean up in fail_on_deadlock
          f = executor.submit(_crash, delay=0.1)
          executor.shutdown(wait=True)
          with self.assertRaises(BrokenProcessPool):
              f.result()
  
imports: import contextlib
  import queue
  import signal
  import sys
  import time
  import unittest
  import unittest.mock
  from pickle import PicklingError
  from concurrent import futures
  from concurrent.futures.process import BrokenProcessPool, _ThreadWakeup
  from test import support
  from .util import create_executor_tests, setup_module, ProcessPoolForkMixin, ProcessPoolForkserverMixin, ProcessPoolSpawnMixin
label_desc: Use image node_id 15 for calling the ExecutorDeadlockTest obj's underlying member method code with example usage: obj.test_shutdown_deadlock() without return types