The value_length parameter to the new jvmtiStringPrimitiveValueCallback is specified to be "The length of the value in bytes". This needs to be changed to:
"Returns the length of the string. The length is equal to the number of 16-bit Unicode characters in the string".
"Returns the length of the string. The length is equal to the number of 16-bit Unicode characters in the string".