Hallo,
ich spiele gerade mit den Devices rum und habe aktuell Probleme mit softhdcuvid.
Kompiliert ist das Plugin mit
VDR ist Version 2.6.1, Geladen werden nur die Plugins softhdcuvid und satip.
Das Problem taucht auf, wenn ich das Device detache/attache:
svdrpsend plug sofhdcuvid DETA <- Funkt
svdrpsend plug sofhdcuvid ATTA <- Funkt
svdrpsend plug sofhdcuvid DETA <- Crash
Im syslog finde ich dazu nur
Jul 2 20:53:39 xyz vdr: [1775554] [softhddev]stopping Ogl Thread svdrp DETA
Jul 2 20:53:39 xyz vdr: [1775554] [softhddev]stopping OpenGL Worker Thread
Jul 2 20:53:39 xyz vdr: [1775554] [softhddev]OpenGL Worker Thread stopped
Jul 2 20:53:39 xyz vdr: [1775554] [softhddev]SetPlayMode: 0
Jul 2 20:53:39 xyz vdr: Set Playmode 0
Jul 2 20:53:39 xyz vdr: video: set closing
Jul 2 20:53:39 xyz vdr: video: set clock --:--:--.---
Jul 2 20:53:39 xyz vdr: video: reset start
Jul 2 20:53:39 xyz vdr: video: set clock --:--:--.---
Jul 2 20:53:39 xyz vdr: video: new stream start
Jul 2 20:53:39 xyz vdr: [1775554] [softhddev]SetVideoDisplayFormat: 1
Jul 2 20:53:39 xyz vdr: [1775554] [softhddev]GetSpuDecoder:
Jul 2 20:53:39 xyz vdr: [1775554] [softhddev]SetPlayMode: 1
Jul 2 20:53:39 xyz vdr: Set Playmode 1
Jul 2 20:53:39 xyz vdr: video: set trick-speed 0
Jul 2 20:53:39 xyz vdr: [softhddev]Suspend:
Jul 2 20:53:39 xyz vdr: [1775604] device 2 receiver thread ended (pid=1775512, tid=1775604)
Jul 2 20:53:39 xyz vdr: Video Exit
Jul 2 20:53:39 xyz vdr: video: screen saver extension present
Jul 2 20:53:39 xyz vdr: cuvid del hw decoder
Jul 2 20:53:39 xyz vdr: video/cuvid: 0 missed, 317 duped, 0 dropped frames of 488,581
Jul 2 20:53:39 xyz vdr: CuvidExit
Jul 2 20:53:39 xyz vdr: video: video thread canceled
Jul 2 20:53:39 xyz vdr: decoder thread exit
Jul 2 20:53:40 xyz vdr: display thread exit
Jul 2 20:53:40 xyz vdr: video/egl: EglExit
Jul 2 20:53:40 xyz vdr: [1775554] ERROR: ListGarbageCollector destroyed without prior Purge()!
Jul 2 20:53:40 xyz vdr: [1775552] KBD remote control thread ended (pid=1775512, tid=1775552)
Auf der Konsole gibt es noch die Meldung
X Error of failed request: GLXBadContextTag
Major opcode of failed request: 151 (GLX)
Minor opcode of failed request: 5 (X_GLXMakeCurrent)
Serial number of failed request: 2220
Current serial number in output stream: 2220
VDR lässt sich dann nur noch mit kill -9 stoppen.
Im Debugger sieht der Stacktrace so aus:
cListGarbageCollector::~cListGarbageCollector tools.c:2132
__run_exit_handlers 0x00007ffff79224d7
__GI_exit 0x00007ffff792267a
_XDefaultError 0x00007ffff5751727
_XError 0x00007ffff5751864
<unknown> 0x00007ffff574e327
_XReply 0x00007ffff574f80c
<unknown> 0x00007fffe03c13c6
<unknown> 0x00007fffe03c34de
<unknown> 0x00007ffff3b4df90
<unknown> 0x00007ffff3b4f25f
EglExit video.c:1230
VideoExit video.c:7165
StopVideo softhddev.c:1966
Suspend softhddev.c:3253
cPluginSoftHdDevice::SVDRPCommand softhdcuvid.cpp:3646
cSVDRPServer::CmdPLUG svdrp.c:2366
cSVDRPServer::Execute svdrp.c:2615
cSVDRPServer::Process svdrp.c:2644
cSVDRPServerHandler::ProcessConnections svdrp.c:2749
cSVDRPServerHandler::Action svdrp.c:2772
cThread::StartThread thread.c:293
start_thread 0x00007ffff7ef8ea7
clone 0x00007ffff79e1def
Display More
cListGarbageCollector::~cListGarbageCollector()
{
if (objects) {
Purge(true);
esyslog("ERROR: ListGarbageCollector destroyed without prior Purge()!");
}
}
static void EglExit(void) {
Debug(3, "video/egl: %s\n", __FUNCTION__);
#if defined PLACEBO && !defined PLACEBO_GL
return;
#endif
glFinish();
// must destroy contet
#ifdef CUVID
// must destroy glx
// if (glXGetCurrentContext() == glxContext) {
// if currently used, set to none
Hier >>> glXMakeCurrent(XlibDisplay, None, NULL);
// }
if (OSDcontext) {
Display More