[Sony Xperia M2] FloatingPoint:
Recently, an Xperia M2 of ours started to reboot from time to time. It seems to be related to disconnects from mobile network:

When no SIM card was inserted, reboots occured every few minutes

Also when signal is weak, the phone reboots every few minutes

Turning mobile data on/off also causes crashes sometimes

Yesterday, the phone rebooted exactly every 30 minutes while mobile data was turned on

The phone is running the latest stock firmware. Here's the relevant part of the log:

--------- beginning of crash

08-29 15:25:50.163 E/AndroidRuntime( 770): *** FATAL EXCEPTION IN SYSTEM PROCESS: NetworkStats

08-29 15:25:50.163 E/AndroidRuntime( 770): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.android.server.action.NETWORK_STATS_POLL flg=0x14 (has extras) } in com.android.server.net.NetworkStatsService$3@379cb85f

08-29 15:25:50.163 E/AndroidRuntime( 770):	at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:882)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at android.os.Handler.handleCallback(Handler.java:739)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at android.os.Handler.dispatchMessage(Handler.java:95)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at android.os.Looper.loop(Looper.java:211)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at android.os.HandlerThread.run(HandlerThread.java:61)

08-29 15:25:50.163 E/AndroidRuntime( 770): Caused by: java.lang.IllegalArgumentException: tried recording negative data

08-29 15:25:50.163 E/AndroidRuntime( 770):	at android.net.NetworkStatsHistory.recordData(NetworkStatsHistory.java:304)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at android.net.NetworkStatsHistory.recordHistory(NetworkStatsHistory.java:377)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at android.net.NetworkStatsHistory.recordEntireHistory(NetworkStatsHistory.java:353)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.server.net.NetworkStatsCollection.recordHistory(NetworkStatsCollection.java:224)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.server.net.NetworkStatsCollection.read(NetworkStatsCollection.java:288)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.server.net.NetworkStatsCollection.read(NetworkStatsCollection.java:262)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.server.net.NetworkStatsRecorder$CombiningRewriter.read(NetworkStatsRecorder.java:303)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.internal.util.FileRotator.readFile(FileRotator.java:372)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.internal.util.FileRotator.rewriteSingle(FileRotator.java:242)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.internal.util.FileRotator.rewriteActive(FileRotator.java:184)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.server.net.NetworkStatsRecorder.forcePersistLocked(NetworkStatsRecorder.java:240)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.server.net.NetworkStatsRecorder.maybePersistLocked(NetworkStatsRecorder.java:227)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.server.net.NetworkStatsService.performPollLocked(NetworkStatsService.java:971)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.server.net.NetworkStatsService.performPoll(NetworkStatsService.java:914)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.server.net.NetworkStatsService.access$600(NetworkStatsService.java:136)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at com.android.server.net.NetworkStatsService$3.onReceive(NetworkStatsService.java:703)

08-29 15:25:50.163 E/AndroidRuntime( 770):	at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:872)

08-29 15:25:50.163 E/AndroidRuntime( 770):	... 4 more

08-29 15:25:50.175 D/ActivityManager( 770): New dropbox entry: system_server, system_server_crash, 94e67198-5dd2-4a3d-af5e-5f7b9ef92cae

08-29 15:25:50.175 I/ActivityManager( 770): A system dump is comming => Stay in memory

08-29 15:25:50.372 D/ActivityManager( 770): System dump requested by: system_server (crash)

08-29 15:25:50.381 D/ActivityManager( 770): Sync fs

08-29 15:25:50.526 D/ActivityManager( 770): Sync done

08-29 15:25:50.533 I/ActivityManager( 770): Continue force dump

08-29 15:25:50.536 I/ActivityManager( 770): Do sysrq

Also, starting from yesterday, accessing Data usage crashes the Settings app. I guess that's only corrupt data remaining from one of the system crashes. Relevant logs:

08-30 09:37:10.229 D/SubSettings(23848): Launching fragment com.android.settings.DataUsageSummary

08-30 09:37:10.417 D/TelephonyManager(23848): getDataEnabled: retVal=false

08-30 09:37:10.421 D/DataUsage(23848): generating cs=1596232800000 to ce=1598911200000 waiting for hs=1594483200000

08-30 09:37:10.429 D/DataUsage(23848): generating cs=1593554400000 to ce=1596232800000 waiting for hs=1594483200000

08-30 09:37:10.454 E/AndroidRuntime(23848): FATAL EXCEPTION: AsyncTask #3

08-30 09:37:10.454 E/AndroidRuntime(23848): Process: com.android.settings, PID: 23848

08-30 09:37:10.454 E/AndroidRuntime(23848): java.lang.RuntimeException: An error occured while executing doInBackground()

08-30 09:37:10.454 E/AndroidRuntime(23848):	at android.os.AsyncTask$3.done(AsyncTask.java:304)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at java.util.concurrent.FutureTask.setException(FutureTask.java:222)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at java.util.concurrent.FutureTask.run(FutureTask.java:242)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at java.lang.Thread.run(Thread.java:818)

08-30 09:37:10.454 E/AndroidRuntime(23848): Caused by: java.lang.IllegalArgumentException: tried recording negative data

08-30 09:37:10.454 E/AndroidRuntime(23848):	at android.os.Parcel.readException(Parcel.java:1559)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at android.os.Parcel.readException(Parcel.java:1505)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at android.net.INetworkStatsSession$Stub$Proxy.getSummaryForAllUid(INetworkStatsSession.java:257)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at com.android.settings.net.SummaryForAllUidLoader.loadInBackground(SummaryForAllUidLoader.java:62)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at com.android.settings.net.SummaryForAllUidLoader.loadInBackground(SummaryForAllUidLoader.java:27)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at android.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:312)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:69)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:57)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at android.os.AsyncTask$2.call(AsyncTask.java:292)

08-30 09:37:10.454 E/AndroidRuntime(23848):	at java.util.concurrent.FutureTask.run(FutureTask.java:237)

08-30 09:37:10.454 E/AndroidRuntime(23848):	... 3 more

08-30 09:37:10.688 I/Process (23848): Sending signal. PID: 23848 SIG: 9

08-30 09:37:10.757 I/ActivityManager( 732): Process com.android.settings (pid 23848) has died

Has someone experienced this kind of problem before? I can only think of factory resetting the phone as a possible solution, so any ideas are appreciated.