Hi there, due to debuging purposes I set in void cThread::Cancel(int WaitSeconds) WaitSeconds = 6000; between the waits of 3 seconds I syslog the message: "thread won`t end" .
At vdr shutdown I get the (endless) error message :
[vdr] ERROR: LIRC remote control thread xxx won't end _until_ I pressed any key.
If Cancel() kills a thread, it ends up with a Segfault mostly.
Does anybody noticed this behavior to?
Maybe there must be another interrogation of Running() in lirc.c
regards Markus
Markus Hahn wrote:
Hi there, due to debuging purposes I set in void cThread::Cancel(int WaitSeconds) WaitSeconds = 6000; between the waits of 3 seconds I syslog the message: "thread won`t end" .
At vdr shutdown I get the (endless) error message :
[vdr] ERROR: LIRC remote control thread xxx won't end _until_ I pressed any key.
If Cancel() kills a thread, it ends up with a Segfault mostly.
Does anybody noticed this behavior to?
Maybe there must be another interrogation of Running() in lirc.c
There are two 'while' loops in cLircRemote::Action(), but both check Running(), so I would expect them to end properly.
You could try adding something like
dsyslog("%d", __LINE__);
at a few places in cLircRemote::Action() to find out where exactly it is hanging, as in
while (Running() && f >= 0) {
dsyslog("%d", __LINE__); bool ready = cFile::FileReady(f, timeout); dsyslog("%d", __LINE__); int ret = ready ? safe_read(f, buf, sizeof(buf)) : -1; dsyslog("%d", __LINE__);
if (ready && ret <= 0 ) {
etc.
Klaus