Hi Pieter,
You are right, they do break out of their loops or may be only warning messages after crashes.
Any way to debug? Thank you in advance.
I add logger = multiprocessing.log_to_stderr(), logger.setLevel(multiprocessing.SUBDEBUG) to the demo, getting the following info:
[INFO/Process-2] process shutting down
[DEBUG/Process-2] running all "atexit" finalizers with priority >= 0
[DEBUG/Process-2] running the remaining "atexit" finalizers
[INFO/Process-2] process exiting with exitcode 0
/home/simon/anaconda3/lib/python3.6/multiprocessing/semaphore_tracker.py:146: UserWarning: semaphore_tracker: There appear to be 1 leaked semaphores to clean up at shutdown
  len(cache))
[INFO/Process-1] process shutting down
[DEBUG/Process-1] running all "atexit" finalizers with priority >= 0
[DEBUG/Process-1] running the remaining "atexit" finalizers
[INFO/Process-1] process exiting with exitcode 0
/home/simon/anaconda3/lib/python3.6/multiprocessing/semaphore_tracker.py:146: UserWarning: semaphore_tracker: There appear to be 1 leaked semaphores to clean up at shutdown
  len(cache))
[INFO/MainProcess] process shutting down
[DEBUG/MainProcess] running all "atexit" finalizers with priority >= 0
[DEBUG/MainProcess] running the remaining "atexit" finalizers
[Level 5/MainProcess] calling <Finalize object, dead>
[Level 5/MainProcess] finalizer calling <function rmtree at 0x7fab0b4bfea0> with args ['/tmp/pymp-hfadelk_'] and kwargs {}