title: Error with pymunk space.remove method
body: <p>I have a ball generator, that "generates" and adds balls(circles) to the simulation.  </p>
  
  <p>The ball is to be removed when it hits a static poly in list <code>s_boxes</code>.<br>
  This is done by a collision handler <code>ball_wall_collision</code>.</p>
  
  <p><strong>The Error:</strong><br>
  The following pop-up window does what it's name says,  it pops-up<br>
  <img src="https://i.stack.imgur.com/dhGLF.png" alt="**POP UP WINDOW**"></p>
  
  <p><strong>My code:</strong><br>
  Ball Generator</p>
  
  <pre><code>class BallGenerator:
      def __init__(self, min_y, max_y, x):
          self.min = min_y
          self.max = max_y
          self.x = x
  
          self.counter = 0
  
      def bowl(self, balls):
          global ball_bowled
          y = random.randint(self.min, self.max)
          pos = to_pymunk((self.x,y))
          r = 10
          m = 15
          i = pm.moment_for_circle(m, 0, r)
          b = pm.Body(m,i)
          b.position = pos
          f_x = random.randint(-600000,-400000)
          b.apply_force( (f_x,0.0),(0,0) )
  
          ball = pm.Circle(b, r)
          ball.elasticity = 0.75
          ball.friction = 0.95
          balls.append(ball)
          space.add(ball,b)
          print 'bowled'
  
          ball_bowled += 1
  
      def handle(self, balls):
          if self.counter == FPS:
              self.bowl(balls)
              self.counter = 0
          self.counter += 1
  </code></pre>
  
  <p>Collision handler</p>
  
  <pre><code>def ball_wall_collision(space, arb, balls, s_boxes):
      shapes = arb.shapes
      boxes = [box[0] for box in s_boxes] # Get walls
      ball = None
      wall = None
      for ba in balls:
          if ba in shapes:
              ball = ba
              break
      for box in boxes:
          if box in shapes:
              wall = box
              break
      if wall and ball:
          print 'removing'
          space.remove(ball, ball.body) # Where the runtime problem happens
          balls.remove(ball)
          print 'removed'
  
          return False
      else:
          return True
  space.add_collision_handler(0,0,begin=ball_wall_collision,
                              balls=balls,s_boxes=s_boxes) # Other args to function
  </code></pre>
  
  <p>What am I doing wrong in the collision handling?? </p>
  
  <ul>
  <li>Am I missing something in the call to <code>space.remove</code>?</li>
  <li>Is the function not working as I want it to??
  Or is the error elsewhere (which I don't think it is)...</li>
  </ul>