Marginal I2C mags can cause problems, all the way to rebooting in mid flight. I own some I2C mag GPS's that I won't fly because the I2C mags are marginal, although I haven't tried them with the latest 16.09 RC that has a pullup fix to help this somewhat. There are some other fixes in 16.09 too, but they don't 100% get rid of all the issues...
Find a 12v power supply and attach your quad to that instead of a flight battery. That will let you run it for a long time (overnight). Now power it up, plug it into USB on your computer (where you have GCS) and note the time of day you power it up. Later, go back and check the timer in the GCS Firmware tab. It shows seconds since power up. Calculate what it should show given the time you powered it up and the time it is now. Like after two hours it should show 7200 (3600 per hour). So after 6 hours and 23 minutes it should show about (6x3600) + (23x60) = 22980. If it shows less, it has rebooted while you weren't watching it. This rebooting might be caused by bad I2C aux mag. You can retest with I2C disabled to see if it goes away.
If you know how to, you might also configure a very long term (12 hour?) GCS scope to display alarms (e.g. CPU and mag) and all the mag info. Look at that to see if there are any alarms or mag spikes. The GCS stores each of the samples, so logging this much data for that long will eat up memory and may cause GCS issues overnight...
Shorten your I2C wires and twist them with some ground wires? Use the latest 16.09 RC. 16.09 RC#something has some fixes for this.