Common problems and solutions
=============================

List set of common problems and their solution.
Most functions are however rather safe and should return an exception in the wrapper, instead of crashing the kernel.
Note that even if the MvK crashes with such an error as mentioned below, this only breaks the violating task and all other tasks are left unharmed.
As such, it is possible for a user to log in again on a different task, although there is no continuation.

body_id is None
---------------------

This error likely means that a function is called that was never defined: the declaration was found, but the definition is empty.

None has no length
------------------------

Operations done on an error value, such as a dictionary read on a non-existing element

pickle.PicklingError: Can't pickle <function X>
-----------------------------------------------

The wrapper for manual activities relies on the multiprocessing library to spawn the various user-side interactions.
As such, the different functions are spawned in different Python processes, to allow for multiple such functions to execute simultaneously, as needed for process enactment.
While this allows for multiple such functions to execute simultaneously, as needed for process enactment, `this is not 100% supported in Python for Windows<https://docs.python.org/2/library/multiprocessing.html#windows>`_.
Your error is therefore likely caused by the multiprocessing library wanting to pass a function (or something else...), which it could not.
For example, it is not possible on Windows to give a local (nested) function as parameter to *transformation_execute_MANUAL*, as local functions cannot be pickled.
On Linux, that would work perfectly fine.