The purple tinted DNG images look like the JPEG tone curve has been applied to the RAW data. This would account for the colour tint because red and blue pixels have a different tone curve to green pixels.
That would explain the changes in meter readings. You're right that a sensor gain change would probably increase all the pixels by the same, linear amount.
I decided to test DNG file saving on my own G1X_100g in continuous mode with exposure over and under 1 second. I was surprised to see that the DNG files with 1.3 second exposure were all distorted in color, while the files with 0.8 second exposure were all normal. All my camera settings are off.
It sounds like the meter readings are correct on my G1X because I'm done computing them before the camera starts changing the raw buffer. But saving DNG files takes a lot longer, so they're always color distorted. The 101a update must start processing the raw buffer sooner for >1 second continuous mode exposures.
Phil, will you take some DNG pictures with exposure 1.3 seconds, Tv mode, continuous drive, and see if it happens on your G1X too? I hope so, because you're the one who can figure it out! Thanks.
Here's a screenshot from Lightroom of the 0.8 and 1.3 second DNG pictures (attached):
[EDIT] The color distorted DNG files were all taken at 400 ISO. When I tried it at 100 ISO, the 1.3 second DNG's were normal.
The DNG files taken by my time lapse script (Av continuous mode) were all normal, including setting the camera to 100 or 400 ISO before starting the script. The script set the exposure to 2 seconds 400 ISO, and the DNG's were normal. Setting the camera to 400 ISO (Tv 2 second continuous mode) produced all color distorted DNG.
I noticed you changed the way you find the raw buffer address recently to a table lookup instead of 2 fixed addresses. Could that be related? Maybe there's a another buffer where the raw data is processed into the jpg. The raw save routine could be picking up the address of that buffer by mistake, depending on the timing. It might be useful to display the raw buffer address (static char *rawadr) in core_spytask.