Is this available in the feed? As an update to xmltv importer or a seperate package?
First, it is necessary to solve the problem http://openpli.org/f...ndpost&p=372921
Question to experts...
Why not stop subprocess at the end of the import?
Posted 12 September 2013 - 15:32
Is this available in the feed? As an update to xmltv importer or a seperate package?
First, it is necessary to solve the problem http://openpli.org/f...ndpost&p=372921
Question to experts...
Why not stop subprocess at the end of the import?
GigaBlue UHD Quad 4K /Lunix3-4K/Duo 4K
Posted 13 September 2013 - 06:38
Edited by MiLo, 13 September 2013 - 06:39.
Posted 13 September 2013 - 17:51
Thanx, Milo!
I hope it's not a problem to switch to other bits, from those broken ones... Any tips/tricks, please?
Posted 13 September 2013 - 18:20
"popen" is broken when running Enigma2 (just like os.system). No one knows why. You get an out-of-memory error on many systems if you use it.
Use enigma's own eConsoleApp and it will work just fine. Don't use os.system, don't use os.popen.
The problem in the wrong/incorrect threads.
This problem is solved in the long DMM.
just warn when eTimers/eSockeNotifiers are stopped from wrong thread
http://git.opendream...7bb58a9ea53cb1 and etc...
Example:
EPGImport mod-->plugin.py-->def doneImport...
if reboot: if Screens.Standby.inStandby: print>>log, "[EPGImport] Restart enigma2" restartEnigma(True) else: msg = _("EPG Import finished, %d events") % epgimport.eventCount + "\n" + _("You must restart Enigma2 to load the EPG data,\nis this OK?") _session.openWithCallback(restartEnigma, MessageBox, msg, MessageBox.TYPE_YESNO, timeout = 15, default = True) print>>log, "[EPGImport] Need restart enigma2" else: if config.plugins.epgimport.parse_autotimer.value and fileExists("/usr/lib/enigma2/python/Plugins/Extensions/AutoTimer/plugin.py"): try: from Plugins.Extensions.AutoTimer.plugin import autotimer if autotimer is None: from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer autotimer = AutoTimer() autotimer.parseEPGAsync(simulateOnly=False) print>>log, "[EPGImport] Run start parse AutoTimer" checkDeepstandby(_session, parse=True) except: print>>log, "[EPGImport] Could not start AutoTimer" checkDeepstandby(_session, parse=False) else: checkDeepstandby(_session, parse=False) class checkDeepstandby: def __init__(self, session, parse=False): self.session = session self.parse = parse self.count = 0 self.FirstwaitCheck = None if self.parse: self.FirstwaitCheck = enigma.eTimer() self.FirstwaitCheck.callback.append(self.runCheckDeepstandby) self.FirstwaitCheck.startLongTimer(40) print>>log, "[EPGImport] Wait for parse AutoTimer 40 sec" else: self.runCheckDeepstandby() def runCheckDeepstandby(self): print>>log, "[EPGImport] Run check deep standby after import"
If self.FirstwaitCheck.startLongTimer delay > 50 sec,def runCheckDeepstandby never executed
Sorry for my bad English.
Edited by Dima73, 13 September 2013 - 18:22.
GigaBlue UHD Quad 4K /Lunix3-4K/Duo 4K
Posted 13 September 2013 - 18:59
That link only gives me:
The problem in the wrong/incorrect threads."popen" is broken when running Enigma2 (just like os.system). No one knows why. You get an out-of-memory error on many systems if you use it.
Use enigma's own eConsoleApp and it will work just fine. Don't use os.system, don't use os.popen.
This problem is solved in the long DMM.
Posted 13 September 2013 - 22:16
Here are 4 crashlogs, if that can help at all....
It's Amiko Alien2 STB with STi 7162 processor, so SH4...
Enigma2 is OpenPLi basis, on the one hand, Duck Tales GIT + AR-P - however, it's PBNIGMA, essentially.
The EPG Import is for Python 2.7 mipsel but I ripped it out of XP1000 and put into this SH4 rec and it worked... for a while... and then the "jitters" started... similar to what others reported...
Best of luck to coders and thanx in advance!
Posted 14 September 2013 - 06:57
no, I'm quite sure that's not related.
The popen/os.system issue is fork returning an error with errno 12 (ENOMEM), which is not related to what the commitlog describes.
This is the tip of the iceberg.
I think wrong/incorrect threads explains the error if use os.popen/os.system, eTimers/eSockeNotifiers.
Please make a test of this post http://openpli.org/f...ndpost&p=373256
I think you are very surprised by the results.
GigaBlue UHD Quad 4K /Lunix3-4K/Duo 4K
Posted 14 September 2013 - 12:11
not possible, it's all closed source.Please make a test of this post http://openpli.org/f...ndpost&p=373256
I think you are very surprised by the results.
Posted 14 September 2013 - 15:12
Posted 14 September 2013 - 15:19
Let's look at a specific case.
Why is not performed eTimer if it is greater than 50 seconds.
EPGImport mod-->plugin.py-->def doneImport...
if reboot: if Screens.Standby.inStandby: print>>log, "[EPGImport] Restart enigma2" restartEnigma(True) else: msg = _("EPG Import finished, %d events") % epgimport.eventCount + "\n" + _("You must restart Enigma2 to load the EPG data,\nis this OK?") _session.openWithCallback(restartEnigma, MessageBox, msg, MessageBox.TYPE_YESNO, timeout = 15, default = True) print>>log, "[EPGImport] Need restart enigma2" else: if config.plugins.epgimport.parse_autotimer.value and fileExists("/usr/lib/enigma2/python/Plugins/Extensions/AutoTimer/plugin.py"): try: from Plugins.Extensions.AutoTimer.plugin import autotimer if autotimer is None: from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer autotimer = AutoTimer() autotimer.parseEPGAsync(simulateOnly=False) print>>log, "[EPGImport] Run start parse AutoTimer" checkDeepstandby(_session, parse=True) except: print>>log, "[EPGImport] Could not start AutoTimer" checkDeepstandby(_session, parse=False) else: checkDeepstandby(_session, parse=False) class checkDeepstandby: def __init__(self, session, parse=False): self.session = session self.parse = parse self.count = 0 self.FirstwaitCheck = None if self.parse: self.FirstwaitCheck = enigma.eTimer() self.FirstwaitCheck.callback.append(self.runCheckDeepstandby) self.FirstwaitCheck.startLongTimer(40) #!!!!!!!!!!!!!!!! print>>log, "[EPGImport] Wait for parse AutoTimer 40 sec" else: self.runCheckDeepstandby() def runCheckDeepstandby(self): print>>log, "[EPGImport] Run check deep standby after import"
If self.FirstwaitCheck.startLongTimer delay > 50 sec,def runCheckDeepstandby never executed
Edited by Dima73, 14 September 2013 - 15:20.
GigaBlue UHD Quad 4K /Lunix3-4K/Duo 4K
Posted 15 September 2013 - 12:07
Hmm, couldn't we also do the same modification in Python then?
A couple of years ago, I replaced the fork in eConsoleAppContainer by a vfork, just to avoid these issues.
Posted 7 October 2013 - 23:10
Sounds like quite a conundrum, sadly...
I know a guy who is now working on this - any more pointers, please?
This seems to be a really interesting point, if one were to crack it and improve the whole of E2, in the process...
Thanx!
Posted 8 October 2013 - 08:28
Posted 8 October 2013 - 19:58
overcommit is already enabled.
Just don't use os.system. It's really really really bad because it blocks the GUI thread. And 99% of the silly things that people use os.system for (e.g. renaming files) can be done perfectly well from within Python without spending all that effort on forking a new process.
0 members, 11 guests, 0 anonymous users