[vdr] sysinfo 0.1.0a

Scott Waye scott at waye.co.uk
Mon Jun 1 22:58:55 CEST 2009


Hi,

I am trying to get this plugin working with vdr 1.7.7.  When I bring it
up from the menu it segmentation faults.  The relevant sections from the
backtrace are :

#0  0x00000000004a4b2d in cBitmap::DrawText (this=0x2acb4e0, x=10, y=3, 
    s=0x7fdb8302fb90 "SysInfo 0.1.0a", ColorFg=4278190080,
ColorBg=2164260863, 
    Font=0x754040, Width=0, Height=0, Alignment=5) at osd.c:454
454	     int w = Font->Width(s);

And the full thread bt is

Thread 1 (process 31944):
#0  0x00000000004a4b2d in cBitmap::DrawText (this=0x2acb4e0, x=10, y=3, 
    s=0x7fdb8302fb90 "SysInfo 0.1.0a", ColorFg=4278190080,
ColorBg=2164260863, 
    Font=0x754040, Width=0, Height=0, Alignment=5) at osd.c:454
	w = <value optimized out>
	limit = <value optimized out>
	cw = <value optimized out>
	h = <value optimized out>
	ch = <value optimized out>
#1  0x00000000004a5b3a in cOsd::DrawText (this=0x12b5f80, x=10, y=3, 
    s=0x7fdb8302fb90 "SysInfo 0.1.0a", ColorFg=4278190080,
ColorBg=2164260863, 
    Font=0x754040, Width=0, Height=0, Alignment=5) at osd.c:856
	i = 1
#2  0x00007fdb8325a34e in PluginXine::cXineOsd::DrawText
(this=0x12b5f80, 
    x=10, y=3, s=0x7fdb8302fb90 "SysInfo 0.1.0a", ColorFg=4278190080, 
---Type <return> to continue, or q <return> to quit--- 
    ColorBg=2164260863, Font=0x754040, Width=0, Height=0, Alignment=5)
    at xineOsd.c:331
	osdLock = {mutex = 0x7fdb85342f40, locked = true}
#3  0x00007fdb8302cc33 in cSysInfoOsd::DrawMenu (this=0x2ad3f50)
    at sysinfoosd.c:204
No locals.
#4  0x00007fdb8302cd33 in cSysInfoOsd::PleaseWait (this=0x754040)
    at sysinfoosd.c:96
	cTemp = "\200_+\001\000\000\000\000\222pJ\000\000\000\000\000\006\000
\000\000\000\000\000\000\200_+\001\001\000\000\000\000\000\000\000\001
\000\000\000\001\000\000\000\000\000\000\000\006\000\000\000\000\000\000
\000\200_+\001\000\000\000\000\200�N\215�\177\000\00009\225\000\000\000
\000\000\001\000\000\000\000\000\000\000\226�%\203�\177\000\000@/4\205"
#5  0x00007fdb8302ce71 in cSysInfoOsd::Show (this=0x2ad3f50) at
sysinfoosd.c:87
	Area = {x1 = 0, y1 = 0, x2 = 623, y2 = 483, bpp = 2}
#6  0x00000000004dec52 in main (argc=<value optimized out>, 
    argv=<value optimized out>) at vdr.c:1154
	state = osPlugin
	Now = 1243887926
	Interact = (class cOsdObject *) 0xe0caf0
	key = kOk
	savedTm = {c_iflag = 7595072, c_oflag = 0, c_cflag = 1040, 
  c_lflag = 0, c_line = 0 '\0', 
  c_cc = "�\217\203�\177\000\000p\231L\205�\177\000\000 \004\000\000\000
\000\000\000����\000\000\000\000�", c_ispeed = 32731, c_ospeed =
7558488}
	HasStdin = false
	StartedAsRoot = <value optimized out>
	VdrUser = 0x0
	UserDump = false
	SVDRPport = 2001
	AudioCommand = 0x0
	ConfigDirectory = 0x7fff8d4eee6f "/etc/vdr"
	EpgDataFileName = 0x504bd9 "epg.data"
	DisplayHelp = 48
	DisplayVersion = false
	DaemonMode = false
	SysLogTarget = <value optimized out>
	MuteAudio = false
	WatchdogTimeout = 60
	Terminal = 0x1 <Address 0x1 out of bounds>
	LocaleDir = 0x0
	UseKbd = true
	LircDevice = 0x0
	RcuDevice = 0x0
	PluginManager = {_vptr.cPluginManager = 0x4fac10, 
  static pluginManager = 0x7fff8d4ede70, 
  directory = 0x74e0b0 "/etc/vdr/plugins/lib", lastHousekeeping =
1243887910, 
---Type <return> to continue, or q <return> to quit---
  nextHousekeeping = 0, dlls = {<cList<cDll>> = {<cListBase> = {
        _vptr.cListBase = 0x4fadb0, objects = 0x74e0f0, lastObject =
0x74e1e0, 
        count = 2}, <No data fields>}, <No data fields>}}
	c = <value optimized out>
	CodeSet = <value optimized out>
	Menu = (class cOsdObject *) 0x754040
	LastChannel = 6
	LastTimerChannel = -1
	PreviousChannel = {1, 6}
	PreviousChannelIndex = 1
	LastChannelChanged = 1243887689
	LastInteract = 1243887926
	MaxLatencyTime = 1
	InhibitEpgScan = false
	IsInfoMenu = false
	CheckHasProgramme = false
	CurrentSkin = <value optimized out>
	long_options = {{name = 0x4f1b2d "audio", has_arg = 1, flag = 0x0, 
    val = 97}, {name = 0x504e9d "config", has_arg = 1, flag = 0x0, val =
99}, {
    name = 0x504ea4 "daemon", has_arg = 0, flag = 0x0, val = 100}, {
    name = 0x504eab "device", has_arg = 1, flag = 0x0, val = 68}, {
    name = 0x504eb2 "epgfile", has_arg = 1, flag = 0x0, val = 69}, {
    name = 0x504eba "grab", has_arg = 1, flag = 0x0, val = 103}, {
    name = 0x504ebf "help", has_arg = 0, flag = 0x0, val = 104}, {
    name = 0x504ec4 "instance", has_arg = 1, flag = 0x0, val = 105}, {
    name = 0x504bd5 "lib", has_arg = 1, flag = 0x0, val = 76}, {
    name = 0x504ecd "lirc", has_arg = 2, flag = 0x0, val = 364}, {
    name = 0x504ed2 "localedir", has_arg = 1, flag = 0x0, val = 620}, {
    name = 0x504edc "log", has_arg = 1, flag = 0x0, val = 108}, {
    name = 0x501208 "mute", has_arg = 0, flag = 0x0, val = 109}, {
    name = 0x504ee0 "no-kbd", has_arg = 0, flag = 0x0, val = 366}, {
    name = 0x504ee7 "plugin", has_arg = 1, flag = 0x0, val = 80}, {
    name = 0x504eee "port", has_arg = 1, flag = 0x0, val = 112}, {
    name = 0x504ef3 "rcu", has_arg = 2, flag = 0x0, val = 370}, {
    name = 0x504ef7 "record", has_arg = 1, flag = 0x0, val = 114}, {
    name = 0x504efe "shutdown", has_arg = 1, flag = 0x0, val = 115}, {
    name = 0x504f07 "terminal", has_arg = 1, flag = 0x0, val = 116}, {
    name = 0x504f10 "user", has_arg = 1, flag = 0x0, val = 117}, {
    name = 0x504f15 "userdump", has_arg = 0, flag = 0x0, val = 373}, {
    name = 0x4f65cc "version", has_arg = 0, flag = 0x0, val = 86}, {
    name = 0x504f1e "vfat", has_arg = 0, flag = 0x0, val = 374}, {
    name = 0x504c92 "video", has_arg = 1, flag = 0x0, val = 118}, {
    name = 0x504f23 "watchdog", has_arg = 1, flag = 0x0, val = 119}, {
    name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
	lastTime = 0
	ChannelSaveTimeout = 1243888290
	TimerState = 0
---Type <return> to continue, or q <return> to quit---#
	LastTimerCheck = 1243887920
	DeviceUsed = {0 <repeats 16 times>}

to me this looks like the Font passed into DrawText is invalid.  This is
set up in sysinfoosd.h thus:

static const cFont *font = cFont::GetFont(fontOsd);

Is there something obvious here that someone with more experience of the
code can spot?

Thanks,

Scott




More information about the vdr mailing list