Warning: Could not open global shared memory to communicate with performance DLL

Today I was busy with SSIS and came across this error

Warning: Could not open global shared memory to communicate with performance DLL;

So how did this happen? I had a Data Flow Task with a OLE DB Source and an OLE DB Destination. In the source I executed a stored proc like this:

EXEC [ExpandAccountDivision] @AccountId = ?

I mapped the parameter to the appropriate variable and everything worked fine. Next I made a copy of the DFT and tried running it again, the initial DFT worked and the copied one failed and got the above error. I tried building, rebuilding, removing/re-adding the Data Flow Paths nothing seemed to work. Eventually I thought lets try changing the copy to run it without the parameter. Hey presto it worked, which lead me to the fact theirs a problem with the Parameter Mapping.

So I reverted back to using the parameter in the Command and checked the Parameter Mapping. What do you know, SSIS copied the DFT no problems, validated and built the package without a problem. But at runtime it gave this very misleading error, which was caused by SSIS not copying across the Parameter Mapping.