-
• #27
Yes... I had that once - but then it went away. I wonder whether it was something strange to do with the firmware update....
Let me know whether it happens again though (and if you find a way to reproduce it). Glad it's looking more stable now!
-
• #28
Failed at some point during the night with the same symptom. Again, by the time I'd found it, the original trace() was long since pushed off the console, and disk errors coming rapidly while the getTime increased far too fast. Last log entry was at 28802.
-
• #29
Strange. I've been running it overnight here (not with filesystem writes, but with a clock using setInterval) and it's spot on :(
-
• #30
Yeah, I've only seen it when I'm doing fs writes. It's as if the SD card failure breaks the timer somehow...
Seems to work fine just sitting there reading dht's.
Edit: Just got another failure, this one much faster - and I got the whole trace this time because it froze entirely at the end
http://drazzy.com/espruino/v58devfailure2.txt
(note that I'd created a demo array to show my friend the WS2812's, that's why there's a graphics object in the trace)
-
• #31
Thanks - just wanted to check - are you using setDeepSleep at all?
-
• #32
Nope, no deep sleep.
-
• #33
The timer bug can be reproduced with this code:
var fs; var interv; var t=-1; var rh=-1; function onInit() { setTimeout("doInit();",2000); } function doInit() { fs=require("fs"); fs.appendFile("timetemp.log","Espruino restarted") interv=setInterval(function(){dologs();},5000); setBusyIndicator(A13); } function dologs() { console.log("trying to log..."+getTime().toFixed()); var ti = getTime(); if (!fs.appendFile("diskerrator.log","DHT11,"+t.toString()+","+rh.toString()+",Time,"+getTime().toFixed()+"\n")){ console.log("FAIL before "+ti+" after "+getTime()); } } save();
Ran it overnight, and woke up to it broken. Manually cleared the interval, and typed getTime() a few times. These were typed a couple of seconds apart at most:
ERROR: Unable to write file : DISK_ERR FAIL before 45778185.87560272216796 after 45778190.38722991943359 trying to log...45778199 ERROR: Unable to write file : DISK_ERR FAIL before 45778211.53864669799804 after 45778216.05158138275146 trying to log...45778225 ERROR: Unable to write file : DISK_ERR FAIL before 45778237.20124530792236 after 45778241.71224975585937 trying to log...45778250 ERROR: Unable to write file : DISK_ERR FAIL before 45778262.85095405578613 after 45778267.36160087585449 trying to log...45778276 ERROR: Unable to write file : DISK_ERR FAIL before 45778288.36543083190917 after 45778292.84815883636474 trying to log...45778302 ERROR: Unable to write file : DISK_ERR FAIL before 45778314.20237731933593 after 45778316.91917991638183 trying to log...45778319 ERROR: Unable to write file : DISK_ERR FAIL before 45778324.45648479461669 after 45778326.43975925445556 trying to log...45778329 ERROR: Unable to write file : DISK_ERR FAIL before 45778333.97615909576416 after 45778336.01252174377441 clearInterval(inter); =undefined getTime(); =45802702.42679214477539 getTime(); =45814433.28411769866943 getTime(); =45828450.28250503540039 reset(); =undefined _____ _ | __|___ ___ ___ _ _|_|___ ___ | __|_ -| . | _| | | | | . | |_____|___| _|_| |___|_|_|_|___| |_| http://espruino.com 1v58 Copyright 2014 G.Williams =undefined >getTime(); =46298892.14406204223632 >getTime(); =46307856.84639739990234
(in above, I had to remove the > prompt, otherwise the forum mangled it)
Last entries in the log:
DHT11,-1,-1,Time,11087 DHT11,-1,-1,Time,11092 DHT11,-1,-1,Time,11097 DHT11,-1,-1,Time,11102 DHT11,-1,-1,Time,11107 DHT11,-1,-1,Time,11112 DHT11,-1,-1,Time,11117 DHT11,-1,-1,Time,11122 DHT11,-1,-1,Time,11127 DHT11,-1,-1,Time,11132 DHT11,-1,-1,Time,11137 DHT11,-1,-1,Time,11142 DHT11,-1,-1,Time,11147 DHT11,-1,-1,Time,11152 DHT11,-1,-1,Time,11157 DHT11,-1,-1,Time,12697 DHT11,-1,-1,Time,12697 DHT11,-1,-1,Time,12697 DHT11,-1,-1,Time,12697 DHT11,-1,-1,Time,12697 DHT11,-1,-1,Time,12697 DHT11,-1,-1,Time,16339 DHT11,-1,-1,Time,16339 DHT11,-1,-1,Time,16339 DHT11,-1,-1,Time,16339 DHT11,-1,-1,Time,16339
-
• #34
You know you can just wrap code in three backtick marks? I just edited your post to add it.
Thanks for cutting it down - I'll try that code out and see what I can get to happen with it.
-
• #35
Yeah - I knew about the backticks (and used them for the js code - or I thought I did), but didn't think to use it on the logs - I was in a hurry since I was posting it while not before I left for work.
What's strange is how it gets 11 writes off (in two bursts) shortly after things have started going off the rails.
-
• #36
Right - just reproduced. Mine did it early too:
trying to log...4033 trying to log...4038 trying to log...4043 trying to log...4050 ERROR: Unable to write file : DISK_ERR FAIL before 4052.196215629577636718 after 4060.322003364562988281 trying to log...4078 ERROR: Unable to write file : DISK_ERR FAIL before 4080.756432533264160156 after 4088.670434951782226562 trying to log...4095 ERROR: Unable to write file : DISK_ERR FAIL before 4097.461118698120117187 after 4105.502131462097167968
I'll see what I can do about fixing this next week.
-
• #37
Just a thought - this will be some issue with the code that keeps the system tick timer in sync with the RTC.
As a workaround, try setDeepSleep (1) and power from a charger/battery so it enters sleep. That will almost certainly solve your problems.
It also explains why one of mine has been running all week and is still keeping good time.
-
• #38
Could you give this a go please? http://www.espruino.com/binaries/git/commits/e85fa5a013c3a1469635b92e12a35591eb2589d8
I've been running it for the past 6 hours or so with your logger and it appears to be fine.
-
• #39
So far it's been running over night without issue. Will keep letting it run.
-
• #40
Wohoo! 1v59 (just released) has the fix in too.
Happened really fast the first time, now seems to be running stable for a while
Edit: Now closing in on 5 hrs running continuously. Heading to bed.
All of these errors were appearing in rapid succession, meaning it was trying to log much more frequently than it should have been - the onslaught was such that the trace and everything else got pushed out. Is there a way to make the IDE log to a file, so I wouldn't miss the results of trace() and the events surrounding the initial event?
In any event, there is no way that the espruino was running for 44494 seconds, nor had it been running for ~25k seconds when the failure occurred.
!!?!?!
http://drazzy.com/espruino/v58devfailure.txt
I'm rather confused by the early failure, followed by a very stable run....