Strange behavior with constant memory


I am getting some strange behavior with constant memory which I can’t see to figure out why. This is all run in emulation mode.

My program defines:

constant double constParameters[16];
double GPUParameters = { 14 doubles }

CUDA_SAFE_CALL( cudaMemcpyToSymbol( constParameters, GPUParameters, sizeof(GPUParameters), sizeof(constParameters) ) );

First question:
Why must I use sizeof(constParameters). Does this not make it write the GPUParameters on mem address: constParameters+sizeof(constParameters) and forward
(I get wrong behavior if I just use offset=0)

Second question:
If i choose constParameters to be of the same size as GPUParameters ie constParameters[14] then I get wrong behavior as well.
Anything below < 16 = wrong. Anything above >= 16 = correct.

Any ideas why this happens?