Hello, today a popup with an exception appeared:
Text No such file or directory: '/tmp/was_rectimer_wakeup'
Log attached.
Regards
asktrevis
Hello, today a popup with an exception appeared:
Text No such file or directory: '/tmp/was_rectimer_wakeup'
Log attached.
Regards
asktrevis
Looks like an unhandled error:
I'm no expert but RecordTimer.py uses:Code:Fehler: [Failure instance: Traceback: <type 'exceptions.OSError'>: [Errno 2] No such file or directory: '/tmp/was_rectimer_wakeup'
but that command only returns true if path exists - ie "/tmp/" rather than actual file as it then proceeds to try to open it but "/tmp" will always return true as path will always be there (I believe). Wouldn't it be better to see if file itself exists before trying to open it?Code:if os.path.exists("/tmp/was_rectimer_wakeup")
Similar thing in mytest.py as well. Not checked in anything else.
Last edited by bbbuk; 06-08-17 at 22:26.
What makes you believe that?
A path in Linux (and Unix) terms is a path to a file-system object - any object. So:
i.e. it's a perfectly valid test for "is there such a file". (Well, almost - it would also return True if there were a directory of that name, but that's not the issue here).Code:[parent]: ls /var/log/boot.log* /var/log/boot.log [parent]: python Python 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> print os.path.exists("/var/log/boot.log") True >>> print os.path.exists("/var/log/boot.logx") False >>> [parent]:
Last edited by birdman; 07-08-17 at 01:43.
MiracleBox Prem Twin HD - 2@DVB-T2 + Xtrend et8000 - 5(incl. 2 different USBs)@DVB-T2[terrestrial - UK Freeview HD, Sandy Heath] - LAN/USB-stick/HDD
Well, the code in question is:and the only way I can see the the second and/or third lines can fail if the first line passes is if two threads are running through here at the same time.Code:if os.path.exists("/tmp/was_rectimer_wakeup") and not wasRecTimerWakeup: wasRecTimerWakeup = int(open("/tmp/was_rectimer_wakeup", "r").read()) and True or False os.remove("/tmp/was_rectimer_wakeup")
Looking at the log a recording is starting up:
The odd thing is that just before that we have:Code:< 230.587> [eDVBServiceRecord] Recording to /media/hdd/movie/20170806 0725 - KiKA HD - Matzes Monster.ts... < 230.588> [eDVBServiceRecord] start recording...
That is switching to StateRunning, which is when that file check takes place. But it is being done twice (I've checked with my own logs- it should only get reported once).Code:< 230.172> [RecordTimer] activating state 2 < 230.176> [RecordTimer] activating state 2
So for some (unknown) reason you had two threads running through this code at the same time, and a race condition ensued. Both happened to pass the test but then when one of them deleted the file the other one reported that it wasn't there as an error.
The issue is why were two timers being moved to StateRunning at the same time?
MiracleBox Prem Twin HD - 2@DVB-T2 + Xtrend et8000 - 5(incl. 2 different USBs)@DVB-T2[terrestrial - UK Freeview HD, Sandy Heath] - LAN/USB-stick/HDD
Ok. I suspect that I've started enigma2 twice by command Line that day. Sorry for that.
Thanks.
Saw one of these tonight, skipping thru' the graphical epg day by day at the time, looking for a programme on bbc4.
If you look at that log you'll see that there was an error in the ubifs file-system at start-up, which is odd , and an error.
Given that /tmp/was_rectimer_wakeup is in memory, it's not directly related - but something on your box's file-system would appear to not be correct.
MiracleBox Prem Twin HD - 2@DVB-T2 + Xtrend et8000 - 5(incl. 2 different USBs)@DVB-T2[terrestrial - UK Freeview HD, Sandy Heath] - LAN/USB-stick/HDD
It is possible to re-write the code so that it won't crash.
Code:if not wasRecTimerWakeup: try: wasRecTimerWakeup = int(open("/tmp/was_rectimer_wakeup", "r").read()) and True or False os.remove("/tmp/was_rectimer_wakeup") except: pass
MiracleBox Prem Twin HD - 2@DVB-T2 + Xtrend et8000 - 5(incl. 2 different USBs)@DVB-T2[terrestrial - UK Freeview HD, Sandy Heath] - LAN/USB-stick/HDD
If it hasn‘t changed (from 4) I wouldn’t think thats the issue.
I trust ofgwrite (online flash) more than the one-off‘firmware produced by the receivers manufacturer
Gigablue Quad 4K & UE 4K
.........FBC Tuners:
------------------> GT-Sat unicable LNB to 1.5M dish(28.2E)
------------------> Gigablue unicable LNB to 80 cm dish(19.2E)
.......................> FBC & DVB-S2X into 90cm dish (27.5W) Opticum robust Unicable LNB
AX HD61, Edision Osmio 4K+, Zgemma H9Combo, Octagon SF8008 , gbtrio4k, h9se using unicable ports
Zgemma H9 C/S into Giga4K
ccs (14-11-18)
I've just created an image backup, and there were no errors, although there was one at boot time (a different inode to the crash log yesterday).
I had another one of these today.
The crash log looks clean, the only subtle difference in the last 9 months is that the timer (correctly) woke up around 6 hours earler than usual.Code:< 229.017> Traceback (most recent call last): < 229.017> File "/usr/lib/enigma2/python/timer.py", line 239, in calcNextActivation < 229.017> File "/usr/lib/enigma2/python/timer.py", line 314, in processActivation < 229.018> File "/usr/lib/enigma2/python/RecordTimer.py", line 957, in doActivate < 229.018> File "/usr/lib/enigma2/python/RecordTimer.py", line 542, in activate < 229.018> OSError: [Errno 2] No such file or directory: '/tmp/was_rectimer_wakeup' < 229.018> [ePyObject] (CallObject(<bound method RecordTimer.calcNextActivation of <RecordTimer.RecordTimer instance at 0x7253ba58>>,()) failed)
Do you have the full debug log?
If so, were there two "[RecordTimer] activating state 2" entries in quick succession for a timer (see #4).
MiracleBox Prem Twin HD - 2@DVB-T2 + Xtrend et8000 - 5(incl. 2 different USBs)@DVB-T2[terrestrial - UK Freeview HD, Sandy Heath] - LAN/USB-stick/HDD