There are times when this particular error is actually misleading, and is caused by other runtime problems.
I documented one such example here - a NullPointerException thrown down deep ended up being reported as this same error, even though it had nothing to do with cross-user permissions.
I'm not certain that this is the case for you, but it's something to check on.