title: multiprocessing.Pool hangs if child causes a segmentation fault
body: <p>I want to apply a function in parallel using multiprocessing.Pool.
  The problem is that if one function call triggers a segmentation fault the Pool hangs forever.
  Has anybody an idea how I can make a Pool that detects when something like this happens and raises an error?</p>
  
  <p>The following example shows how to reproduce it (requires scikit-learn > 0.14)</p>
  
  <pre><code>import numpy as np
  from sklearn.ensemble import gradient_boosting
  import time
  
  from multiprocessing import Pool
  
  class Bad(object):
      tree_ = None
  
  
  def fit_one(i):
      if i == 3:
          # this will segfault                                                    
          bad = np.array([[Bad()] * 2], dtype=np.object)
          gradient_boosting.predict_stages(bad,
                                           np.random.rand(20, 2).astype(np.float32),
                                           1.0, np.random.rand(20, 2))
      else:
          time.sleep(1)
      return i
  
  
  pool = Pool(2)
  out = pool.imap_unordered(fit_one, range(10))
  # we will never see 3
  for o in out:
      print o
  </code></pre>