Hallo,
beim Spielen mit dem VDR bekomme ich immer wieder einen segfault. Seltsamerweise immer an derselben Stelle, allerdings dürfte es da kein Problem geben:
Thread 1 "vdr" received signal SIGSEGV, Segmentation fault.
0x000055555571a7a7 in main (argc=14, argv=0x555555818ba0) at vdr.c:1203
1203 bool NeedsFastResponse = Menu && Menu->NeedsFastResponse();
(gdb) bt full
#0 0x000055555571a7a7 in main(int, char**) (argc=14, argv=0x555555818ba0) at vdr.c:1203
key = kNone
Interact = 0x555567961b20
Control = 0x0
Now = 1688647512
NeedsFastResponse = false
ControlMutexLock = {mutex = 0x0, locked = false}
NewPrimaryDVB = 1
savedTm = {c_iflag = 1280, c_oflag = 5, c_cflag = 191, c_lflag = 35387, c_line = 0 '\000', c_cc = "\003\034\177\025\004\000\001\000\021\023\032\000\022\017\027\0--Type <RET> for more, q to quit, c to continue without paging--c
26", '\000' <repeats 15 times>, c_ispeed = 15, c_ospeed = 15}
HasStdin = true
StartedAsRoot = false
VdrUser = 0x0
UserDump = false
SVDRPport = 6419
AudioCommand = 0x0
VideoDirectory = 0x555555744438 "/home/rh/idea/vdr-2.6.4/videodir"
ConfigDirectory = 0x555555744438 "/home/rh/idea/vdr-2.6.4/videodir"
CacheDirectory = 0x555555744438 "/home/rh/idea/vdr-2.6.4/videodir"
ResourceDirectory = 0x555555744438 "/home/rh/idea/vdr-2.6.4/videodir"
LocaleDirectory = 0x555555744460 "/home/rh/idea/vdr-2.6.4/locale"
EpgDataFileName = 0x55555574447f "epg.data"
DisplayHelp = false
DisplayVersion = false
DaemonMode = false
SysLogTarget = 8
MuteAudio = true
WatchdogTimeout = 0
Terminal = 0x0
OverrideCharacterTable = 0x0
UseKbd = true
LircDevice = 0x0
Args = 0x5555558170a0
PluginManager = {_vptr.cPluginManager = 0x555555795410 <vtable for cPluginManager+16>, static pluginManager = 0x7fffffffd9a0, directory = 0x5555558174f0 "/home/rh/idea/vdr-2.6.4/PLUGINS/lib", lastHousekeeping = 1688647132, nextHousekeeping = -1, dlls = {<cList<cDll>> = {<cListBase> = {_vptr.cListBase = 0x555555795508 <vtable for cDlls+16>, objects = 0x555555818680, lastObject = 0x5555558176b0, count = 6, stateLock = {name = 0x0, threadId = 0, rwLock = {rwlock = {__data = {__readers = 0, __writers = 0, __wrphase_futex = 0, __writers_futex = 0, __pad3 = 0, __pad4 = 0, __cur_writer = 0, __shared = 0, __rwelision = 0 '\000', __pad1 = "\000\000\000\000\000\000", __pad2 = 0, __flags = 1}, __size = '\000' <repeats 48 times>, "\001\000\000\000\000\000\000", __align = 0}, locked = 0, writeLockThreadId = 0}, state = 0, explicitModify = 0, syncStateKey = 0x0}, needsLocking = 0x0, useGarbageCollector = false}, <No data fields>}, <No data fields>}}
long_options = {{name = 0x555555744339 "audio", has_arg = 1, flag = 0x0, val = 97}, {name = 0x55555574433f "cachedir", has_arg = 1, flag = 0x0, val = 355}, {name = 0x555555744348 "chartab", has_arg = 1, flag = 0x0, val = 611}, {name = 0x555555744350 "config", has_arg = 1, flag = 0x0, val = 99}, {name = 0x555555744357 "daemon", has_arg = 0, flag = 0x0, val = 100}, {name = 0x55555574435e "device", has_arg = 1, flag = 0x0, val = 68}, {name = 0x555555744365 "dirnames", has_arg = 1, flag = 0x0, val = 356}, {name = 0x55555574436e "edit", has_arg = 1, flag = 0x0, val = 357}, {name = 0x555555744373 "epgfile", has_arg = 1, flag = 0x0, val = 69}, {name = 0x55555574437b "filesize", has_arg = 1, flag = 0x0, val = 358}, {name = 0x555555744384 "genindex", has_arg = 1, flag = 0x0, val = 359}, {name = 0x55555574438d "grab", has_arg = 1, flag = 0x0, val = 103}, {name = 0x555555744392 "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x555555744397 "instance", has_arg = 1, flag = 0x0, val = 105}, {name = 0x5555557443a0 "lib", has_arg = 1, flag = 0x0, val = 76}, {name = 0x5555557443a4 "lirc", has_arg = 2, flag = 0x0, val = 364}, {name = 0x5555557443a9 "localedir", has_arg = 1, flag = 0x0, val = 620}, {name = 0x5555557443b3 "log", has_arg = 1, flag = 0x0, val = 108}, {name = 0x5555557443b7 "mute", has_arg = 0, flag = 0x0, val = 109}, {name = 0x5555557443bc "no-kbd", has_arg = 0, flag = 0x0, val = 366}, {name = 0x5555557443c3 "plugin", has_arg = 1, flag = 0x0, val = 80}, {name = 0x5555557443ca "port", has_arg = 1, flag = 0x0, val = 112}, {name = 0x5555557443cf "record", has_arg = 1, flag = 0x0, val = 114}, {name = 0x5555557443d6 "resdir", has_arg = 1, flag = 0x0, val = 370}, {name = 0x5555557443dd "showargs", has_arg = 2, flag = 0x0, val = 627}, {name = 0x5555557443e6 "shutdown", has_arg = 1, flag = 0x0, val = 115}, {name = 0x5555557443ef "split", has_arg = 0, flag = 0x0, val = 371}, {name = 0x5555557443f5 "terminal", has_arg = 1, flag = 0x0, val = 116}, {name = 0x5555557443fe "updindex", has_arg = 1, flag = 0x0, val = 629}, {name = 0x555555744407 "user", has_arg = 1, flag = 0x0, val = 117}, {name = 0x55555574440c "userdump", has_arg = 0, flag = 0x0, val = 373}, {name = 0x555555744415 "version", has_arg = 0, flag = 0x0, val = 86}, {name = 0x55555574441d "vfat", has_arg = 0, flag = 0x0, val = 374}, {name = 0x555555744422 "video", has_arg = 1, flag = 0x0, val = 118}, {name = 0x555555744428 "watchdog", has_arg = 1, flag = 0x0, val = 119}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
c = -1
CodeSet = 0x7ffff7024d8c "UTF-8"
EpgDataReader = {<cThread> = {_vptr.cThread = 0x555555792140 <vtable for cEpgDataReader+16>, active = false, running = false, childTid = 140737152804544, childThreadId = 922038, mutex = {mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 2, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 16 times>, "\002", '\000' <repeats 22 times>, __align = 0}, locked = 0}, description = 0x555555819d20 "epg data reader", lowPriority = false, static mainThreadId = 922034}, <No data fields>}
Menu = 0x555567961b20
LastChannel = 12
LastTimerChannel = -1
PreviousChannel = {11, 12}
PreviousChannelIndex = 1
LastChannelChanged = 1688647447
LastInteract = 1688647511
MaxLatencyTime = 0
InhibitEpgScan = false
IsInfoMenu = false
CurrentSkin = 0x555555a8b800
OldPrimaryDVB = 1
(gdb)
Meine ganz dunkle Vermutung ist, daß das Menu entweder nicht (mehr?) existiert oder der Speicherbereich dahinter irgendwie überschrieben wird.
Merkwürdig ist auch, daß überhaupt kein Menu im eigentlichen Sinne offen ist, sondern es nur ein eigenes cOsdObject gibt.
Mit valgrind bin ich nicht weiter gekommen. Es gibt Warnungen im Skindesigner, aber zum eigentlichen Problem konnte ich mich noch nicht hinarbeiten, weil das alles unglaublich träge ist.
Gibt es irgendwelche Ideen, wie die Ursache ermitteln werden kann?