Hi everyone,
i have experienced some strange behaviour of my plain vanilla vdr. When vdr reaches the end of a replay it segfaults. Core file analysis showed the following backtrace:
#0 cUnbufferedFile::Seek(long, int) (this=0x0, Offset=0, Whence=0) at tools.c:884 #1 0x080dab2c in cFileName::SetOffset(int, int) (this=0xb56a1540, Number=3, Offset=0) at recording.c:1345 #2 0x080dac5d in cFileName::NextFile() (this=0x0) at recording.c:1358 #3 0x0809d8e1 in cDvbPlayer::NextFile(unsigned char, int) (this=0xb56a1540, FileNumber=64 '@', FileOffset=0) at dvbplayer.c:306 #4 0x0809db67 in cDvbPlayer::Action() (this=0x3) at thread.h:94 #5 0x080fce56 in cThread::StartThread(cThread*) (Thread=0x3) at thread.c:234 #6 0xb7fbab63 in start_thread () from /lib/tls/libpthread.so.0
It seems that vdr tries to access a reference to an cUbufferedFile object in cFileName::SetOffset which is a null pointer. The following quick and dirty hack solved the crash, but as I don't know this code deep enough it may have other side effects.
--- recording.c.sav Mon Oct 31 13:27:58 2005 +++ recording.c Tue Nov 1 19:20:27 2005 @@ -1342,7 +1342,7 @@ cUnbufferedFile *cFileName::SetOffset(in // found a non existing file suffix } if (Open() >= 0) { - if (!record && Offset >= 0 && file->Seek(Offset, SEEK_SET) != Offset) { + if (!record && Offset >= 0 && file && file->Seek(Offset, SEEK_SET) != Offset) { LOG_ERROR_STR(fileName); return NULL; }
Regards, Joachim.
Joachim Wilke wrote:
Hi everyone,
i have experienced some strange behaviour of my plain vanilla vdr. When vdr reaches the end of a replay it segfaults. Core file analysis showed the following backtrace:
#0 cUnbufferedFile::Seek(long, int) (this=0x0, Offset=0, Whence=0) at tools.c:884 #1 0x080dab2c in cFileName::SetOffset(int, int) (this=0xb56a1540, Number=3, Offset=0) at recording.c:1345 #2 0x080dac5d in cFileName::NextFile() (this=0x0) at recording.c:1358 #3 0x0809d8e1 in cDvbPlayer::NextFile(unsigned char, int) (this=0xb56a1540, FileNumber=64 '@', FileOffset=0) at dvbplayer.c:306 #4 0x0809db67 in cDvbPlayer::Action() (this=0x3) at thread.h:94 #5 0x080fce56 in cThread::StartThread(cThread*) (Thread=0x3) at thread.c:234 #6 0xb7fbab63 in start_thread () from /lib/tls/libpthread.so.0
It seems that vdr tries to access a reference to an cUbufferedFile object in cFileName::SetOffset which is a null pointer. The following quick and dirty hack solved the crash, but as I don't know this code deep enough it may have other side effects.
--- recording.c.sav Mon Oct 31 13:27:58 2005 +++ recording.c Tue Nov 1 19:20:27 2005 @@ -1342,7 +1342,7 @@ cUnbufferedFile *cFileName::SetOffset(in // found a non existing file suffix } if (Open() >= 0) {
if (!record && Offset >= 0 && file->Seek(Offset, SEEK_SET) != Offset) {
if (!record && Offset >= 0 && file && file->Seek(Offset,
SEEK_SET) != Offset) { LOG_ERROR_STR(fileName); return NULL; }
Regards, Joachim.
I'd say this isn't just a "quick and dirty hack", it's the actual fix. Before using cUbufferedFile the lseek() just failed when the file handle was -1. Now the pointer is NULL in than case, so the check is necessary.
Thanks for spotting.
Klaus
Hi @ll,
now I've got a second problem after i ensured that my FF card is broken: Now I try to get my output via na old Hollywood+ card. But I don't know if I'm using a wrong cable or if it isn't working. When my (c't)VDR starts the TV is flickering a short time (when the drivers for the Hollywood Plus card are loaded). But when this is done the screen stays black. I installed the Hollywood card simply by apt-get install vdr-plugin-dxr3 ... Now is my question: do I have to tell VDR explicitly to use the Hollywood card instead of my (semi-broken) FF card? Or am I using the wrong cable so that it's not possible to display anything?
Any hint? Would be thankful for any help!
Christian
Now I tried to connect an old VGA monitor at my Hollywood card. But it also stays black ... ??!??!
Christian
Christian Balzer schrieb:
Hi @ll,
now I've got a second problem after i ensured that my FF card is broken: Now I try to get my output via na old Hollywood+ card. But I don't know if I'm using a wrong cable or if it isn't working. When my (c't)VDR starts the TV is flickering a short time (when the drivers for the Hollywood Plus card are loaded). But when this is done the screen stays black. I installed the Hollywood card simply by apt-get install vdr-plugin-dxr3 ... Now is my question: do I have to tell VDR explicitly to use the Hollywood card instead of my (semi-broken) FF card? Or am I using the wrong cable so that it's not possible to display anything?
Any hint? Would be thankful for any help!
Christian
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
On Tue, 01 Nov 2005 20:30:04 +0100 Christian Balzer christian-balzer@gmx.de wrote:
Hi @ll,
now I've got a second problem after i ensured that my FF card is broken: Now I try to get my output via na old Hollywood+ card. But I don't know if I'm using a wrong cable or if it isn't working. When my (c't)VDR starts the TV is flickering a short time (when the drivers for the Hollywood Plus card are loaded). But when this is done the screen stays black. I installed the Hollywood card simply by apt-get install vdr-plugin-dxr3 ... Now is my question: do I have to tell VDR explicitly to use the Hollywood card instead of my (semi-broken) FF card? Or am I using the wrong cable so that it's not possible to display anything?
Any hint? Would be thankful for any help!
Christian
Have you changed the primary device setting to point to the Hollywood+ in VDR setup and are you running vdr with the dxr3 plugin (-Pdxr3)? If you only have one FF card, the primary device should be 2, unless I remember incorrectly (1 is the FF card).
You can also test the Hollywood+ card with MPlayer. There are various parameters that can be given to the em8300 and other dxr3 modules. You need to read the documentation at the dxr3 project SourceForge page and within the source code package to get an idea of the possible problems and solutions. Incorrect parameter values can cause various defects to the picture and it is easier to test different settings with MPlayer.
-- Niko Mikkilä
Hi Niko,
first of all: thanks for the fast answer. second a dum question: where can I change the primary device? I found various discussions about the primary device but i didn't find anything about where to set this. In which configure file is this done???
Christian
Niko Mikkila schrieb:
On Tue, 01 Nov 2005 20:30:04 +0100 Christian Balzer christian-balzer@gmx.de wrote:
Hi @ll,
now I've got a second problem after i ensured that my FF card is broken: Now I try to get my output via na old Hollywood+ card. But I don't know if I'm using a wrong cable or if it isn't working. When my (c't)VDR starts the TV is flickering a short time (when the drivers for the Hollywood Plus card are loaded). But when this is done the screen stays black. I installed the Hollywood card simply by apt-get install vdr-plugin-dxr3 ... Now is my question: do I have to tell VDR explicitly to use the Hollywood card instead of my (semi-broken) FF card? Or am I using the wrong cable so that it's not possible to display anything?
Any hint? Would be thankful for any help!
Christian
Have you changed the primary device setting to point to the Hollywood+ in VDR setup and are you running vdr with the dxr3 plugin (-Pdxr3)? If you only have one FF card, the primary device should be 2, unless I remember incorrectly (1 is the FF card).
You can also test the Hollywood+ card with MPlayer. There are various parameters that can be given to the em8300 and other dxr3 modules. You need to read the documentation at the dxr3 project SourceForge page and within the source code package to get an idea of the possible problems and solutions. Incorrect parameter values can cause various defects to the picture and it is easier to test different settings with MPlayer.
-- Niko Mikkilä
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
On Tue, 01 Nov 2005 22:19:53 +0100 Christian Balzer christian-balzer@gmx.de wrote:
Hi Niko,
first of all: thanks for the fast answer. second a dum question: where can I change the primary device? I found various discussions about the primary device but i didn't find anything about where to set this. In which configure file is this done???
Christian
I don't have access to my VDR box right now, but I think it is in setup.conf like most of the settings. Just look for PrimaryDVB in that file.
-- Niko Mikkilä
Christian Balzer wrote:
second a dum question: where can I change the primary device? I found various discussions about the primary device but i didn't find anything about where to set this. In which configure file is this done???
hi,
to be certain that the h+ is working you could have a look at the init parameters of the dxr3 drivers, there is a picture generator function intergrated (can´t remember witch module, its to long ago)
Selon Lars Bläser lars.blaeser@lycosxxl.de:
Christian Balzer wrote:
second a dum question: where can I change the primary device? I found various discussions about the primary device but i didn't find anything about where to set this. In which configure file is this done???
hi,
to be certain that the h+ is working you could have a look at the init parameters of the dxr3 drivers, there is a picture generator function intergrated (can´t remember witch module, its to long ago)
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Christian,
A Hollywood+ card needs some specific drivers to be loaded prior to use it ! If your TV is flickering when loading the drivers, it seems that you have some drivers... Meanwhile, the TV screen should normally (often) became grren for a while, before displaying the channel you're watching !
So that, could you please look at the following:
1. If you display loaded modules (bash command is lsmod), do you see the em8300 drivers ? 2. Do you have FFMPEG installed correctly ? EM8300 drivers needs that !
EM8300 is the driver used to manage the Hollywood+ card.
More informations about installing/using the DXR3 plugin is located at http://www.linuxtv.org/vdrwiki/index.php/Dxr3-plugin
PS: Before changing the setup.conf file for changing the primary device, make sure that vdr is not working !
Hi Michael,
- the drivers are loaded - i installed FFMPEG manually, but i thought that the c't vdr managed the installation of all needed hollywood+ stuff correctly. Anyway, the installation of ffmpeg didn't change anything
When i try "mplayer -ao oss:/dev/em8300_ma-0 -vo dxr3 dvd://1" i can see the DVD via the h+ card. So now i know that is not broken. But i cant't imagine, what's wrong when i try to disply the vdr ...
Christian
michaelip@free.fr schrieb:
Selon Lars Bläser lars.blaeser@lycosxxl.de:
Christian Balzer wrote:
second a dum question: where can I change the primary device? I found various discussions about the primary device but i didn't find anything about where to set this. In which configure file is this done???
hi,
to be certain that the h+ is working you could have a look at the init parameters of the dxr3 drivers, there is a picture generator function intergrated (can´t remember witch module, its to long ago)
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Christian,
A Hollywood+ card needs some specific drivers to be loaded prior to use it ! If your TV is flickering when loading the drivers, it seems that you have some drivers... Meanwhile, the TV screen should normally (often) became grren for a while, before displaying the channel you're watching !
So that, could you please look at the following:
- If you display loaded modules (bash command is lsmod), do you see the em8300
drivers ? 2. Do you have FFMPEG installed correctly ? EM8300 drivers needs that !
EM8300 is the driver used to manage the Hollywood+ card.
More informations about installing/using the DXR3 plugin is located at http://www.linuxtv.org/vdrwiki/index.php/Dxr3-plugin
PS: Before changing the setup.conf file for changing the primary device, make sure that vdr is not working !
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Selon Christian Balzer christian-balzer@gmx.de:
Hi Michael,
- the drivers are loaded
- i installed FFMPEG manually, but i thought that the c't vdr managed
the installation of all needed hollywood+ stuff correctly. Anyway, the installation of ffmpeg didn't change anything
When i try "mplayer -ao oss:/dev/em8300_ma-0 -vo dxr3 dvd://1" i can see the DVD via the h+ card. So now i know that is not broken. But i cant't imagine, what's wrong when i try to disply the vdr ...
Christian
michaelip@free.fr schrieb:
Selon Lars Bläser lars.blaeser@lycosxxl.de:
Christian Balzer wrote:
second a dum question: where can I change the primary device? I found various discussions about the primary device but i didn't find anything about where to set this. In which configure file is this done???
hi,
to be certain that the h+ is working you could have a look at the init parameters of the dxr3 drivers, there is a picture generator function intergrated (can´t remember witch module, its to long ago)
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Christian,
A Hollywood+ card needs some specific drivers to be loaded prior to use it ! If your TV is flickering when loading the drivers, it seems that you have
some
drivers... Meanwhile, the TV screen should normally (often) became grren for
a
while, before displaying the channel you're watching !
So that, could you please look at the following:
- If you display loaded modules (bash command is lsmod), do you see the
em8300
drivers ? 2. Do you have FFMPEG installed correctly ? EM8300 drivers needs that !
EM8300 is the driver used to manage the Hollywood+ card.
More informations about installing/using the DXR3 plugin is located at http://www.linuxtv.org/vdrwiki/index.php/Dxr3-plugin
PS: Before changing the setup.conf file for changing the primary device,
make
sure that vdr is not working !
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Ok. Your card and cable are working fine ! Nice !
So now let's try changing the setup.conf ! But bne sure that vdr is stopped before changing the file as vdr saves the setup.conf file before leaving (well, that's what I noticed !)...
By the way, before doing that ! Did you load the DXR3 plugin when starting vdr ? Because even if you use the wrong primary device for input, you should at least see the OSD on the TV !
Hope it helps.
michaelip@free.fr schrieb:
Selon Christian Balzer christian-balzer@gmx.de:
Hi Michael,
- the drivers are loaded
- i installed FFMPEG manually, but i thought that the c't vdr managed
the installation of all needed hollywood+ stuff correctly. Anyway, the installation of ffmpeg didn't change anything
When i try "mplayer -ao oss:/dev/em8300_ma-0 -vo dxr3 dvd://1" i can see the DVD via the h+ card. So now i know that is not broken. But i cant't imagine, what's wrong when i try to disply the vdr ...
Christian
michaelip@free.fr schrieb:
Selon Lars Bläser lars.blaeser@lycosxxl.de:
Christian Balzer wrote:
second a dum question: where can I change the primary device? I found various discussions about the primary device but i didn't find anything about where to set this. In which configure file is this done???
hi,
to be certain that the h+ is working you could have a look at the init parameters of the dxr3 drivers, there is a picture generator function intergrated (can´t remember witch module, its to long ago)
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Christian,
A Hollywood+ card needs some specific drivers to be loaded prior to use it ! If your TV is flickering when loading the drivers, it seems that you have
some
drivers... Meanwhile, the TV screen should normally (often) became grren for
a
while, before displaying the channel you're watching !
So that, could you please look at the following:
- If you display loaded modules (bash command is lsmod), do you see the
em8300
drivers ? 2. Do you have FFMPEG installed correctly ? EM8300 drivers needs that !
EM8300 is the driver used to manage the Hollywood+ card.
More informations about installing/using the DXR3 plugin is located at http://www.linuxtv.org/vdrwiki/index.php/Dxr3-plugin
PS: Before changing the setup.conf file for changing the primary device,
make
sure that vdr is not working !
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Ok. Your card and cable are working fine ! Nice !
So now let's try changing the setup.conf ! But bne sure that vdr is stopped before changing the file as vdr saves the setup.conf file before leaving (well, that's what I noticed !)...
By the way, before doing that ! Did you load the DXR3 plugin when starting vdr ? Because even if you use the wrong primary device for input, you should at least see the OSD on the TV !
Hope it helps.
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
I tried to change settings in the setup.conf with a stopped vdr. But it didn't work. :-( Even the OSD is not displayed. I get nothing expect the flickering while drivers are loaded. Err, the dxr3 drivers are loaded by /etc/init.d/vdr start -dxr3 or not?? When VDR is started these are last the ouput lines:
av7110: found av7110-0 adv717x.o Configuring for PAL am8300_audio.o: Analof audio enabled em8300: Microcode version 0x29 loaded
Christian