Why my copter flys in circle while compass works fine

I was doing a flight mission today, with circle flight lines(for some purpose), copter flew in circle and also rotated by itself, like Earth rotates itself while moving around the sun. The copter completed the mission well, then it went back to home point and started to land, but with the decrease of altitude it started to move around again(not been set in mission), usually it flys around if there is compass error, but in the log it seems compass data is all right, somebody help me to find the reason, please.

Autopilot is pixhawk, firmware is copter v3.5

Here is log:

Any help? Still waiting here!

To me it seems that the internal compass has quite big offset. PARM, 629638759, COMPASS_OFS2_Z, 1015

Normaly it shold be under 600

High values (> 600) will turn yellow and may indicate magnetic interference. Offsets higher than 600 will turn red and generate a warning.

What setup are you using ? i see that you havent done Compass Mot for any compasses !

@Margus_A Thanks so much! But I have set to use only compass 1! Also is Compass Mot necessary and important?

COMPASS_AUTODEC is disabled, which is no good, especially since you did not configure COMPASS_DEC
enable, reboot, fly… assuming your calibration is good.

Yes. Compass_Mot is used to measure motor/power system magnetic interference vs throttle % and that data is used to “tweak” the compass offsets…
http://ardupilot.org/copter/docs/common-compass-setup-advanced.html

@Margus_A @Andre-K OK thanks! I will test all these compass parameters ASAP!