You are not logged in.

Dear visitor, welcome to VDR Portal. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Sunday, December 4th 2005, 10:20pm

[gelöst]Restart von vdr bei Schnitt, wenn "Platte beinahe voll!"

Hallo

Ich habe hier ein eigentlich gravierendes Problem, dass mir schon längere Zeit unter den Nägeln brennt, das aber sonst niemand hier im Board zu haben scheint. Und nachdem es mir heute zum wiederholten mal passiert ist, als ich versehentlich die Lautstärke ändern wollte, nachdem der vdr schon ein 3/4 Stündchen mit Schneiden beschäftigt war (NFS ist halt nicht so schnell, aber dazu mehr später), hier also jetzt das Problem:

Der vdr verabschiedet sich mit einem Segmentation Fault, wenn er, während die Meldung "Platte beinahe voll!" erscheint, schneidet. Aber nur dann, wenn man den vdr während des Schneidens normal weiterbenutzen will. Lässt man die Fernbedienung unangerührt, schneidet er in der Regel bis zum Ende fertig, unter der Voraussetzung, dass auch noch genügend Platz auf der Festplatte ist.
Dieses Problem tritt erst seit der Version 1.3.x in Erscheinung, bei der Version 1.2.x kann ich mich an solch ein Verhalten nicht erinnern, obwohl das auch schon eine Weile her ist.
Zum Reproduzieren des Fehlers verwende ich die aktuelle Vaniilla Version (1.3.37) zusammen mit dem dxr3-Plugin. Der selbe fehler tritt aber mindestens schon seit der Version 1.3.11 auf (das ist die erste 1.3.x Version, die ich verwende). Der Kernel unter dem vdr läuft ist 2.4.26. Das video Verzeichnis wird über NFS gemountet, root ist ebenfalls über NFS gemountet (diskless, siehe Signatur). Das einzige was Syslog mir vor dem Abgang gibt ist das:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dec  4 21:38:43 athlon vdr[2213]: confirm: Platte beinahe voll!
Dec  4 21:38:43 athlon vdr[2213]: warning: Platte beinahe voll!
Dec  4 21:38:43 athlon vdr[2183]: dxr3: cSPUEncoder::Flush: OSD data size: 6842
Dec  4 21:38:43 athlon vdr[2183]: dxr3: cSPUEncoder::Flush: OSD data size: 7157
Dec  4 21:38:43 athlon last message repeated 17 times
Dec  4 21:38:43 athlon vdr[2244]: setting audio track to 1 (0)
Dec  4 21:38:43 athlon vdr[2244]: dxr3: audiodecoder: sample rate=48000
Dec  4 21:38:43 athlon vdr[2244]: dxr3: audiodecoder: channels=2
Dec  4 21:38:43 athlon vdr[2244]: dxr3: audiodecoder: sample rate=48000
Dec  4 21:38:43 athlon vdr[2244]: dxr3: audiodecoder: channels=2
Dec  4 21:38:43 athlon vdr[2183]: dxr3: cSPUEncoder::Flush: OSD data size: 7157
Dec  4 21:38:47 athlon last message repeated 71 times
Dec  4 21:38:48 athlon vdr[2183]: switching to channel 6
Dec  4 21:38:48 athlon vdr[2244]: transfer thread ended (pid=2244, tid=917514)
Dec  4 21:38:49 athlon vdr[2183]: dxr3: Setting analog audio mode
Dec  4 21:38:49 athlon vdr[2246]: TS buffer on device 1 thread ended (pid=2246, tid=950285)
Dec  4 21:38:50 athlon vdr[2245]: buffer stats: 82532 (3%) used
Dec  4 21:38:50 athlon vdr[2245]: receiver on device 1 thread ended (pid=2245, tid=933899)
Dec  4 21:38:50 athlon vdr[2183]: buffer stats: 598216 (28%) used
Dec  4 21:38:50 athlon kernel: em8300_video.o: Video sync interrupted
Wenn mir jemand sagt, wie ich dem vdr mehr entlocken kann oder auch wie man ein Backtrace erstellt, würde ich das gerne tun.

Das ganze ist mir aber, soweit ich mich erinnern kann, auch schon mit einem MT gepanschten LinVDR mit FF Karte passiert, scheint also auch kein dxr3-spezifisches Problem zu sein. Ich habe das Problem schon einmal vor einem 3/4 Jahr in diesem Thread geschildert:

http://www.vdrportal.de/board/thread.php…7948#post267948

Aber irgendwie ist niemand auf das Problem eingegangen.
Vielleicht ist das ganze ja auch nur ein Feature, dessen Sinn sich mir bis zum jetzigen Zeitpunkt einfach nicht erschliessen will.
Bitte lasst mich nicht im Dunkeln.

Gruss

derschorsch
VDR: SW: LinVDR 0.7, MT20050518, Kernel 2.6.14 - HW: TT FF 1.3, TT Budget, WinTV PVR250(32554), MSI KT4V-L, Athlon 900, 256MB RAM, HDD 80GB, AVBoard 1.3, Medion RF RC
Baustelle: SW: LFS 5.1(diskless), vdr-1.3.37-bp4 - HW: DXR3, 2xTT Budget, WinTV PVR250(32564), MSI KT3Ultra2-CL, AthlonXP 1600, 512MB RAM, Medion RF RC

This post has been edited 3 times, last edit by "derschorsch" (Dec 7th 2005, 11:22pm)


amair

Master

Posts: 2,303

Location: Schrobenhausen

Occupation: Software-Entwicklung und -Support

  • Send private message

2

Monday, December 5th 2005, 8:56am

RE: Restart von vdr bei Schnitt, wenn "Platte beinahe voll!"

Hi,

ich habe den Fehler auch. Unterschiedliche VDR-Versionen aber immer gepatcht, hab's leider noch nicht ungepatcht getestet :(

Versuche doch mal im Init-Skript des VDR vor dessen Aufruf ein "ulimit -c unlimited" zu setzen. Damit sollte er auf jeden Fall einen coredump erstellen.

Gruß,
Andreas

3

Monday, December 5th 2005, 10:50am

RE: Restart von vdr bei Schnitt, wenn "Platte beinahe voll!"

@amair: Ich bin echt froh, dass ich nicht der einzige bin, dem das passiert.

Ich habe übrigens nochmal versucht, das ganze unter LinVDR 0.7 mit dem MT20050518 Patch und dem Kernel 2.6.14 (siehe auch Signatur) nachzustellen und prompt ist es wieder passiert, ohne dass der VDR auch nur damit begonnen hätte, zu schneiden. Naja, das stimmt nicht ganz, es existiert das Schnittverzeichnis mit einer 001.vdr, die aber nur 30kb gross ist.
Ich bin jetzt mal einfach so forsch und behaupte, dass dies ein bisher unentdeckter Bug von VDR ist, der nur nicht erkannt wird, weil die meisten ziemlich grosse Festplatten haben. Ich hingegen mit meinem notorischen Festplattenplatzmangel, habe ständig dieses Problem.

Ich hab jetzt auch mal corefiles von der 1.3.37 Vanilla Version erstellt und backtraces gemacht. Dabei bin ich nach einer Anleitung aus dem Board vorgegangen. Ich hoffe ich habe alles richtig gemacht. Hier das Ergebnis von 2 Crashes:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
(gdb) bt
#0  0x08104755 in cSkins::Message (this=0x81fcc00, Type=mtWarning,
    s=0x81425ff "Platte beinahe voll!", Seconds=30) at skins.c:229
#1  0x080babdf in cInterface::Confirm (this=0x9d402a8,
    s=0x81425ff "Platte beinahe voll!", Seconds=30, WaitForTimeout=false)
    at interface.c:64
#2  0x080ebd38 in AssertFreeDiskSpace (Priority=-1) at recording.c:163
#3  0x0809d222 in cCuttingThread::Action (this=0x9d3bee0) at cutter.c:86
#4  0x08119af4 in cThread::StartThread (Thread=0x9d3bee0) at thread.c:235
#5  0x4003dc65 in pthread_start_thread () from /lib/libpthread.so.0
#6  0x4023a27a in clone () from /lib/libc.so.6
(gdb) bt full
#0  0x08104755 in cSkins::Message (this=0x81fcc00, Type=mtWarning,
    s=0x81425ff "Platte beinahe voll!", Seconds=30) at skins.c:229
        k = kBack
#1  0x080babdf in cInterface::Confirm (this=0x9d402a8,
    s=0x81425ff "Platte beinahe voll!", Seconds=30, WaitForTimeout=false)
    at interface.c:64
        k = kUp
        result = 8
#2  0x080ebd38 in AssertFreeDiskSpace (Priority=-1) at recording.c:163
        LockFile = {fileName = 0x9da4090 "/mnt/video0/.lock-vdr", f = 29}
        DeletedRecordingsLock = {thread = 0x81fc130, locked = true}
        RecordingsLock = {thread = 0x81fc190, locked = true}
        LastFreeDiskCheck = 0
        Factor = 10
#3  0x0809d222 in cCuttingThread::Action (this=0x9d3bee0) at cutter.c:86
        FileNumber = 0 '\0'
        FileOffset = 0
        Length = 0
        PictureType = 0 '\0'
        LastIFrame = 0
        buffer = '\0' <repeats 522228 times>, "W\211\025\b\025\000\000\000ã8\035@$FÚ\tB\211\025\b\025\000\000\000\000\000\000\000b\211\025\bXÃÓ\tÀø?¾È\036\033@XÃÓ\tb\211\025\b\001\000\000\000b\211\025\b|ô?¾\230ø?¾\000\000\000\000\000\000\000\000\004\003\033@\000\000\000\000¬ø?¾", '\0' <repeats 156 times>, "àw'@\000\000d àw'@\000\000d ", '\0' <repeats 12 times>, "àw'@\000\000d ", '\0' <repeats 16 times>, "\001", '\0' <repeats 31 times>, "\n\000\000\000\f\200\a\000\001", '\0' <repeats 11 times>, "|ô?¾\000\000\000\000\003\000\000\000Ìú?¾¬ø"...
        cutIn = true
        Index = 1944
        FileSize = 0
        CurrentFileNumber = 0
        LastMark = false
        Mark = (class cMark *) 0x9d3c1d0
#4  0x08119af4 in cThread::StartThread (Thread=0x9d3bee0) at thread.c:235
No locals.
#5  0x4003dc65 in pthread_start_thread () from /lib/libpthread.so.0
No symbol table info available.
#6  0x4023a27a in clone () from /lib/libc.so.6
No symbol table info available.
crash Nummer 2:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
(gdb) bt
#0  0x401d8f95 in _int_free () from /lib/libc.so.6
#1  0x401d7e58 in free () from /lib/libc.so.6
#2  0x401148b1 in operator delete () from /usr/lib/libstdc++.so.5
#3  0x404ad23b in cSPUEncoder::EncodePixelbufRle (this=0x404c1f00, x=0, y=0, w=720, h=575, inbuf=0x405998f8 "", stride=0, ed=0x404c2108)
    at dxr3spuencoder.c:406
#4  0x404aced7 in cSPUEncoder::Flush (this=0x404c1f00, Palette=0x9d86e78) at dxr3spuencoder.c:312
#5  0x404b3517 in cDxr3SubpictureOsd::Flush (this=0x9d8ca50) at dxr3osd_subpicture.c:253
#6  0x08107827 in cSkinSTTNGDisplayChannel::Flush (this=0x9d57f20) at skinsttng.c:322
#7  0x08104ca8 in cSkins::Flush (this=0x81fcc00) at skins.c:333
#8  0x080baaf7 in cInterface::Wait (this=0x9d3efb8, Seconds=30, KeepChar=false) at interface.c:47
#9  0x08104703 in cSkins::Message (this=0x81fcc00, Type=mtWarning, s=0x81425ff "Platte beinahe voll!", Seconds=30) at skins.c:222
#10 0x080babdf in cInterface::Confirm (this=0x9d3efb8, s=0x81425ff "Platte beinahe voll!", Seconds=30, WaitForTimeout=false) at interface.c:64
#11 0x080ebd38 in AssertFreeDiskSpace (Priority=-1) at recording.c:163
#12 0x0809d222 in cCuttingThread::Action (this=0x9defab0) at cutter.c:86
#13 0x08119af4 in cThread::StartThread (Thread=0x9defab0) at thread.c:235
#14 0x4003dc65 in pthread_start_thread () from /lib/libpthread.so.0
#15 0x4023a27a in clone () from /lib/libc.so.6
(gdb) bt full
#0  0x401d8f95 in _int_free () from /lib/libc.so.6
No symbol table info available.
#1  0x401d7e58 in free () from /lib/libc.so.6
No symbol table info available.
#2  0x401148b1 in operator delete () from /usr/lib/libstdc++.so.5
No symbol table info available.
#3  0x404ad23b in cSPUEncoder::EncodePixelbufRle (this=0x404c1f00, x=0, y=0, w=720, h=575, inbuf=0x405998f8 "", stride=0, ed=0x404c2108)
    at dxr3spuencoder.c:406
        pb = {x = 720, y = 575, rgb = {192, 0, 44, 58657919}, pixels = 0x405998f8 ""}
        i = 575
        row = 575
        ws = 704
        hs = 576
#4  0x404aced7 in cSPUEncoder::Flush (this=0x404c1f00, Palette=0x9d86e78) at dxr3spuencoder.c:312
        NumColors = 6
        Colors = (const tColor *) 0x9d86e78
#5  0x404b3517 in cDxr3SubpictureOsd::Flush (this=0x9d8ca50) at dxr3osd_subpicture.c:253
        Bitmap = (class cBitmap *) 0x0
        oldi = 5
        newi = 6
        i = 0
        indexfree = {5, 592, 186, 6, 1073998546, 563085344, 593, 135135525, 114538832, 136266976, 6, 6, 136266976, 105606924, -1103628068, 135141863}
        firstfree = -1
        indexnoassigned = {344, 54, 186, 623, 0, 0, 1083207616, 165179000, 1, 1083207616, 5, 6, 0, 16843008, 16843009, 16843009}
        firstnoassigned = -1
        colfree = {false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true}
        NumNewColors = 6
        NumOldColors = 6
        newPalette = (cPalette *) 0x40907230
        newColors = (const tColor *) 0x40907230
        oldColors = (const tColor *) 0x9d86e78
#6  0x08107827 in cSkinSTTNGDisplayChannel::Flush (this=0x9d57f20) at skinsttng.c:322
No locals.
#7  0x08104ca8 in cSkins::Flush (this=0x81fcc00) at skins.c:333
No locals.
#8  0x080baaf7 in cInterface::Wait (this=0x9d3efb8, Seconds=30, KeepChar=false) at interface.c:47
        Key = 135339102
        timeout = 165
#9  0x08104703 in cSkins::Message (this=0x81fcc00, Type=mtWarning, s=0x81425ff "Platte beinahe voll!", Seconds=30) at skins.c:222
        k = kNone
#10 0x080babdf in cInterface::Confirm (this=0x9d3efb8, s=0x81425ff "Platte beinahe voll!", Seconds=30, WaitForTimeout=false) at interface.c:64
        k = kUp
        result = 8
#11 0x080ebd38 in AssertFreeDiskSpace (Priority=-1) at recording.c:163
        LockFile = {fileName = 0x409142b8 "/mnt/video0/.lock-vdr", f = 20}
        DeletedRecordingsLock = {thread = 0x81fc130, locked = true}
        RecordingsLock = {thread = 0x81fc190, locked = true}
        LastFreeDiskCheck = 1133741600
        Factor = 10
#12 0x0809d222 in cCuttingThread::Action (this=0x9defab0) at cutter.c:86
        FileNumber = 1 '\001'
        FileOffset = 648539350
        Length = 13849
        PictureType = 3 '\003'
        LastIFrame = 30552
        buffer = "\000\000\001à\aú\204\201\005/ÕElç\000\000\001\000\002\237ÿû¸\000\000\001µ\20553\234ax\000\000\000\001\001B¬\004\005+\000\000\001\002B¬\004\005+\000\000\001\003B¬\004\005+\000\000\001\004B¬\004\005+\000\000\001\005B®ã\031\005\fªâ-\000\177\\aÓj\230[\214wÕ\"Ü%Ï\204U\033î ¸|f\200]\\AÍ\025L7\020`:\027T\203u\207\000e\\aÐ\017}q\004\220°9\0317\020f&\001uq\217:æx¨ER\vq\206\202«\234\200]\n§\024f8\rÂë\210;×\030f\0038\005ÕÄ\027\031\033n\003ö®úõÎ\200]7=«\214x\002Êâ\vE@.\203"...
        cutIn = false
        Index = 41040
        FileSize = 458967127
        CurrentFileNumber = 1
        LastMark = false
        Mark = (class cMark *) 0x9dd48e8
#13 0x08119af4 in cThread::StartThread (Thread=0x9defab0) at thread.c:235
No locals.
#14 0x4003dc65 in pthread_start_thread () from /lib/libpthread.so.0
No symbol table info available.
#15 0x4023a27a in clone () from /lib/libc.so.6
No symbol table info available.
Ist das ganze eher was für die mailingist, oder bin ich komplett auf dem Holzweg?

Gruss

derschorsch
VDR: SW: LinVDR 0.7, MT20050518, Kernel 2.6.14 - HW: TT FF 1.3, TT Budget, WinTV PVR250(32554), MSI KT4V-L, Athlon 900, 256MB RAM, HDD 80GB, AVBoard 1.3, Medion RF RC
Baustelle: SW: LFS 5.1(diskless), vdr-1.3.37-bp4 - HW: DXR3, 2xTT Budget, WinTV PVR250(32564), MSI KT3Ultra2-CL, AthlonXP 1600, 512MB RAM, Medion RF RC

mbruehl

Professional

Posts: 628

Location: Hennef / NRW

  • Send private message

4

Monday, December 5th 2005, 10:57am

Quoted

Ich bin jetzt mal einfach so forsch und behaupte, dass dies ein bisher unentdeckter Bug von VDR ist, der nur nicht erkannt wird, weil die meisten ziemlich grosse Festplatten haben.


OFF_TOPIC on

Ich finde es ja schon geil, das VDR schon so weit ist, daß sich Leute freuen wenn sie mal einen "richtigen" Bug gefunden haben !

OFF_TOPIC on
VDR: DD 5.5 mit 4 Tunern , Intel 847 mit nvidia Kepler 630 , 4GB RAM , 1x 1TB , yavdr 0.5 X10 Fernbedienung von Pollin zu Steuerung, Diverse XBMC (openelec + Windows) im Haus als Clients

amair

Master

Posts: 2,303

Location: Schrobenhausen

Occupation: Software-Entwicklung und -Support

  • Send private message

5

Monday, December 5th 2005, 11:07am

RE: Restart von vdr bei Schnitt, wenn "Platte beinahe voll!"

Hi,

Quoted

Original von derschorsch
Ich bin jetzt mal einfach so forsch und behaupte, dass dies ein bisher unentdeckter Bug von VDR ist, der nur nicht erkannt wird, weil die meisten ziemlich grosse Festplatten haben. Ich hingegen mit meinem notorischen Festplattenplatzmangel, habe ständig dieses Problem.

Hatte bis vor Kurzem auch des öfteren dieses Problem, jetzt habe ich eine größere Festplatte ;)

Quoted

Ich hab jetzt auch mal corefiles von der 1.3.37 Vanilla Version erstellt und backtraces gemacht. Dabei bin ich nach einer Anleitung aus dem Board vorgegangen. Ich hoffe ich habe alles richtig gemacht. Hier das Ergebnis von 2 Crashes:
[...]

Ist das ganze eher was für die mailingist, oder bin ich komplett auf dem Holzweg?

Gruss

derschorsch

Also ich würde mal Klaus informieren, da es im Vanilla VDR auftritt. Hast Du auch alle Plugins deaktiviert (hab' das was von einer DXR3 im Backtrace gelesen)?
Tritt bei mir allerdings auch ohne DXR3-Plugin auf...

Gruß,
Andreas

6

Monday, December 5th 2005, 11:12am

@mbruehl: Was heisst freuen. Ich bin sehr zufrieden mit meinem VDR und benutze ihn schon mindestens seit der 1.0.x. Nur das Problem habe ich nun mal schon so lange, habs auch schon mal vor über einem halben Jahr versucht anzusprechen, damals ist aber niemand drauf eingegangen. Deshalb hab ichs diesmal vielleicht ein bisschen "reisserischer" aufgemacht. Wenn das zu übertrieben ist, tuts mit leid.

@amair: Ich habe nur das dxr3-Plugin aktiviert, damit ich auch Schneiden kann. Aber wie gesagt, ich habs nochmal mit meiner MT gepanschten LinVDR Version mit FF Karte versucht und da ist es auch passiert.

Gruss

derschorsch
VDR: SW: LinVDR 0.7, MT20050518, Kernel 2.6.14 - HW: TT FF 1.3, TT Budget, WinTV PVR250(32554), MSI KT4V-L, Athlon 900, 256MB RAM, HDD 80GB, AVBoard 1.3, Medion RF RC
Baustelle: SW: LFS 5.1(diskless), vdr-1.3.37-bp4 - HW: DXR3, 2xTT Budget, WinTV PVR250(32564), MSI KT3Ultra2-CL, AthlonXP 1600, 512MB RAM, Medion RF RC

This post has been edited 1 times, last edit by "derschorsch" (Dec 5th 2005, 11:15am)


mbruehl

Professional

Posts: 628

Location: Hennef / NRW

  • Send private message

7

Monday, December 5th 2005, 11:18am

Quoted

Wenn das zu übertrieben ist, tuts mit leid.


Um Gottes willen, nein! Fehler müssen behoben werden !
Es ist nur deine Ungläubigkeit "ich habe wirklich einen Fehler gefunden der in die Mailingliste gehört", die einen daran erinnert wie weit VDR schon ist.
Ich habe noch keinen Fehler gefunden der nicht von mir selbst oder irgendwlchen Pantschereien verursacht worden ist. Ich durfte letzte Woche mit offiziellem Segen des WAF den Sat Receiver im Wohnzimmer abbauen. So stabil ist er.

Frohes schaffen !!
VDR: DD 5.5 mit 4 Tunern , Intel 847 mit nvidia Kepler 630 , 4GB RAM , 1x 1TB , yavdr 0.5 X10 Fernbedienung von Pollin zu Steuerung, Diverse XBMC (openelec + Windows) im Haus als Clients

This post has been edited 1 times, last edit by "mbruehl" (Dec 5th 2005, 11:19am)


8

Monday, December 5th 2005, 6:16pm

RE: Restart von vdr bei Schnitt, wenn "Platte beinahe voll!"

Quoted

Original von amair
Also ich würde mal Klaus informieren, da es im Vanilla VDR auftritt.


Könnte jemand, der sich mit der Materie auskennt, den vermeintlichen Bug verifizieren? Ich will ja den Meister nicht unnötig belästigen und von wichtigerem abhalten, wenns nicht unbedingt nötig ist. Wie kann ich überhaupt Klaus informieren, über die email auf der VDR Homepage, oder muss ich mich mit meinem kläglichen Englisch in der mailinglist versuchen?

Gruss

derschorsch
VDR: SW: LinVDR 0.7, MT20050518, Kernel 2.6.14 - HW: TT FF 1.3, TT Budget, WinTV PVR250(32554), MSI KT4V-L, Athlon 900, 256MB RAM, HDD 80GB, AVBoard 1.3, Medion RF RC
Baustelle: SW: LFS 5.1(diskless), vdr-1.3.37-bp4 - HW: DXR3, 2xTT Budget, WinTV PVR250(32564), MSI KT3Ultra2-CL, AthlonXP 1600, 512MB RAM, Medion RF RC

amair

Master

Posts: 2,303

Location: Schrobenhausen

Occupation: Software-Entwicklung und -Support

  • Send private message

9

Tuesday, December 6th 2005, 11:07am

RE: Restart von vdr bei Schnitt, wenn "Platte beinahe voll!"

Hallo,

Quoted

Original von derschorsch

Quoted

Original von amair
Also ich würde mal Klaus informieren, da es im Vanilla VDR auftritt.


Könnte jemand, der sich mit der Materie auskennt, den vermeintlichen Bug verifizieren?

Wie meinst Du verifizieren?
Ich dachte, das hast Du schon gemacht. Vanilla VDR, Schneiden, Platte voll, Absturz. Coredump hast Du auch.

Quoted

Ich will ja den Meister nicht unnötig belästigen und von wichtigerem abhalten, wenns nicht unbedingt nötig ist. Wie kann ich überhaupt Klaus informieren, über die email auf der VDR Homepage, oder muss ich mich mit meinem kläglichen Englisch in der mailinglist versuchen?

Gruss

derschorsch

Die E-Mail auf der VDR-Homepage wird wohl ankommen, es ist die gleiche wie in der Mailingliste. Als VDRPortal-User kls ist er auch erreichbar.

Gruß,
Andreas

10

Tuesday, December 6th 2005, 1:57pm

RE: Restart von vdr bei Schnitt, wenn "Platte beinahe voll!"

@amair
Mit verifizieren meinte ich eigentlich nur, dass vielleicht ein paar mehr Leute bestätigen, dass es ein Bug ist. Ich möchte einfach ausschliessen, dass es ein Fehler in meiner Konfiguration ist. Damit möchte ich keineswegs Dein Urteilsvermögen und technisches Verständnis in Frage stellen (ich benutze übrigens deine VDRAdmin Version, coole Sache :] ). Da Du bis jetzt der einzige bist, der mir positivies Feedback gegeben hat, bin ich mir nur nicht sicher, ob es wirklich ein genereller Bug in VDR ist. Ansonsten scheint das Problem niemanden zu betreffen.

Ich werd versuchen, mit meinen begrenzten Mitteln der Sache auf den Grund zu gehen. Kann ja auch nix schaden, sich mal ein bisschen mit der Materie auseinanderzusetzen. Mein Verdacht geht in die Richtung, dass der Cut Thread irgendwie von der Platzüberpfrüfung gestört wird, vielleicht hats auch was mit dem lock zu tun. An einem zu kleinen Wert für den Watchdog liegts auf jeden Fall nicht, ein getriggerter Watchdog beendet VDR ja auch schliesslich nicht mit einem Seg Fault, oder? Ich bin auf der Suche nach meinem Problem auf einen 2 Jahre alten Thread in der mailinglist gestossen, der auf einen zu kleinen Wert für den Watchdog hinwies.
Ich seh das jetzt einfach mal als Herausforderung an und zudem eine Möglichkeit meine eingestaubten, rudimentären C++ - Kenntnisse aufzufrischen. Da es ja auch kein dringendes Problem zu sein scheint, hab ich ja auch genügend Zeit und wenn ich erfolgreich bin, um so besser. Vielleicht ziehe ich mir da aber auch einen zu grossen Schuh an.
Ich meld mich an dieser Stelle dann wieder, wenn ich was in Erfahrung bringen konnte, oder wenn ich irgendwo auf ein Problem stossen sollte.

Gruss

derschorsch

PS: Für alle Fälle hab ich schon was in englisch aufgesetzt für die mailinglist :rolleyes:
VDR: SW: LinVDR 0.7, MT20050518, Kernel 2.6.14 - HW: TT FF 1.3, TT Budget, WinTV PVR250(32554), MSI KT4V-L, Athlon 900, 256MB RAM, HDD 80GB, AVBoard 1.3, Medion RF RC
Baustelle: SW: LFS 5.1(diskless), vdr-1.3.37-bp4 - HW: DXR3, 2xTT Budget, WinTV PVR250(32564), MSI KT3Ultra2-CL, AthlonXP 1600, 512MB RAM, Medion RF RC

11

Wednesday, December 7th 2005, 7:51pm

RE: Restart von vdr bei Schnitt, wenn "Platte beinahe voll!"

Da ich hier irgendwie nicht weiterkomme, aus oben beschriebenen Gründen, will ich hier mal meine gesammelten Erkenntnisse zusammenfassen.

1. Ich konnte den Fehler nicht mehr reproduzieren, wenn ich einfach den Aufruf von:

Source code

1
Interface->Confirm(tr("Low disk space!"), 30);
in void AssertFreeDiskSpace(int Priority) in der recording.c auskommentiere. Damit wird sowohl bei einer Aufnahme als auch beim Schneiden nicht mehr angezeigt, wenn der Plattenplatz knapp wird, aber wenigstens läuft dann das Schneiden stabil.

2. Ausserdem bleibt nach einem Absturz das .lock-vdr file erhalten. Um den Fehler erneut zu provozieren muss man es vorher löschen, da sonst der Schneidevorgang beginnt, ohne die "Platte beinahe voll!" Meldung zu bringen. Natürlich nur wenn man nicht so lange warten will, bis das lock file automatisch gelöscht wird (10 min glaub ich). Ich gehe daher davon aus, dass der Absturz nichts mit dem Lock Mechanismus zu tun hat.

Viel mehr konnte ich nicht herausfinden.

Daher hier jetzt ein paar Fragen.

:deppenalarm

Kann es sein, dass der Aufruf von Interface->Confirm (interface.c) aus der AssertFreeDiskSpace (recording.c) Funktion, die wiederum aus dem Cut Thread (cCuttingThread::Action) (cutter.c) aufgerufen wird und somit letztendlich ein Skins.Message (skins.c) bewirkt, irgendeinem anderen Aufruf von Skins.Message in die Quere kommt und damit den Segmentation Fault auslöst? Kann man sagen, dass AssertFreeDiskSpace threadsafe ist, wobei ich keine Ahnung habe, was das eigentlich heissen soll und in diesem Zusammenhang überhaupt von Bedeutung ist?

Durch den Aufruf von AssertFreeDiskSpace und damit Skins.Message im Cut Thread wird ausserdem bewirkt, dass dieser anhält, entweder für 30 Sekunden, bis die Anzeige von selbst wieder verschwindet, oder bis eine Taste gedrückt wird. Welchen Sinn macht das genau, insbesondere weil AssertFreeDiskSpace(-1) bewirkt, dass dann 10 Sekunden nach der Anzeige schon die nächste erscheint und somit Intervalle von 10 Sek Schneiden 30 Sek Warten entstehen, die das Schneiden unnötig verlangsamen. Oder soll das dazu dienen, in den dreissig Sekunden die Festplatte aufzuräumen? Vielleicht ist das ja eines der oben erwähnten Features, die sich mir nicht erschliessen wollen.

Gruss

derschorsch (auf Erleuchtung hoffend)
VDR: SW: LinVDR 0.7, MT20050518, Kernel 2.6.14 - HW: TT FF 1.3, TT Budget, WinTV PVR250(32554), MSI KT4V-L, Athlon 900, 256MB RAM, HDD 80GB, AVBoard 1.3, Medion RF RC
Baustelle: SW: LFS 5.1(diskless), vdr-1.3.37-bp4 - HW: DXR3, 2xTT Budget, WinTV PVR250(32564), MSI KT3Ultra2-CL, AthlonXP 1600, 512MB RAM, Medion RF RC

This post has been edited 1 times, last edit by "derschorsch" (Dec 7th 2005, 8:00pm)


12

Wednesday, December 7th 2005, 8:02pm

IMHO darf nur aus nur aus dem Mainthread das OSD angesprochen werden,
Für die blanke Ausgabe eine Message gabe es deshalb ab es auch in 1.3.37 folgende Änderung :

Quoted

- The new function Skins.QueueMessage() can be called from a background thread
to queue a message for display. See VDR/skins.h for details.


Kann aktuelle ebenfalls nicht testen, da ebenfalls zwei große Platten vorhanden sind...

my 2 cent,
Andreas
System: VDR 2.0 unter Debian Wheezy
Aktive Projekte : Radiorecorder Web GUI | DVD-Switch Plugin | targa VFD Plugin | XXV - Xtreme eXtension for VDR

13

Wednesday, December 7th 2005, 8:23pm

Quoted

Original von Hulk
IMHO darf nur aus nur aus dem Mainthread das OSD angesprochen werden,
Für die blanke Ausgabe eine Message gabe es deshalb ab es auch in 1.3.37 folgende Änderung :

Quoted

- The new function Skins.QueueMessage() can be called from a background thread
to queue a message for display. See VDR/skins.h for details.

Heisst das im Umkehrschluss, dass Skins.Message(), damit Interface->Confirm und somit auch AssertFreeDiskSpace nicht threadsafe ist?
Das hiesse dann ja, dass man den Aufruf von Skins.Message in Interface->Confirm durch Skins.QueueMessage zu ersetzen hätte, was aber natürlich keinen Sinn macht, da damit alle Abfragen im OSD wie z.B. "Aufzeichnung löschen?" auch davon betroffen wären. Was auch deshalb keinen Sinn macht, weil QueueMessage die Meldung verzögert anzeigen würde, wenn ich das richtig verstanden habe, und somit nicht praktikabel ist.

Quoted

Kann aktuelle ebenfalls nicht testen, da ebenfalls zwei große Platten vorhanden sind...
Schade ;(

Gruss

derschorsch
VDR: SW: LinVDR 0.7, MT20050518, Kernel 2.6.14 - HW: TT FF 1.3, TT Budget, WinTV PVR250(32554), MSI KT4V-L, Athlon 900, 256MB RAM, HDD 80GB, AVBoard 1.3, Medion RF RC
Baustelle: SW: LFS 5.1(diskless), vdr-1.3.37-bp4 - HW: DXR3, 2xTT Budget, WinTV PVR250(32564), MSI KT3Ultra2-CL, AthlonXP 1600, 512MB RAM, Medion RF RC

UFO

Sage

Posts: 5,108

Location: Großherzogthum Baden

  • Send private message

14

Wednesday, December 7th 2005, 8:58pm

RE: Restart von vdr bei Schnitt, wenn "Platte beinahe voll!"

Quoted

Original von derschorsch
1. Ich konnte den Fehler nicht mehr reproduzieren, wenn ich einfach den Aufruf von:

Source code

1
Interface->Confirm(tr("Low disk space!"), 30);
in void AssertFreeDiskSpace(int Priority) in der recording.c auskommentiere. Damit wird sowohl bei einer Aufnahme als auch beim Schneiden nicht mehr angezeigt, wenn der Plattenplatz knapp wird, aber wenigstens läuft dann das Schneiden stabil.

Sind auf der Maschine eine separate video-Partition und System-Partition vorhanden?
Da Interface->Confirm versucht, ins Logfile zu schreiben, würde dies schief gehen, falls die Systemplatte
voll läuft. (Nur so eine Idee...)

CU
Oliver
VDR Remote Control Plugin (Version 0.5.0): http://www.escape-edv.de/endriss/vdr
FAQ zum Remote Control Plugin: http://www.escape-edv.de/endriss/vdr/FAQ
Aktuelle Treiber: http://www.vdr-portal.de/board16-video-d…-s2-6400-teil-2
Full-TS-Mod für SD full-featured Karten: http://www.escape-edv.de/endriss/dvb-full-ts-mod bzw. hier
SDRAM-Erweiterung für SD full-featured Karten: http://www.escape-edv.de/endriss/dvb-mem-mod

15

Wednesday, December 7th 2005, 9:06pm

RE: Restart von vdr bei Schnitt, wenn "Platte beinahe voll!"

Quoted

Original von UFO
Sind auf der Maschine eine separate video-Partition und System-Partition vorhanden?
Da Interface->Confirm versucht, ins Logfile zu schreiben, würde dies schief gehen, falls die Systemplatte
voll läuft. (Nur so eine Idee...)

video- und Systempartition sind auf verschiedenen Partitionen, auf beiden ist noch genügend Platz frei. Ich bekomme auch sonst alle syslog Einträge angezeigt.

Ich hab aber jetzt einfach mal spasseshalber das

Source code

1
Interface->Confirm(tr("Low disk space!"), 30);
in AssertFreeDiskSpace() in recording.c durch

Source code

1
Skins.QueueMessage(mtWarning, tr("Low disk space!"), 30);
ersetzt.
Bis jetzt konnte ich keinen Crash mehr provozieren. Ich werde aber mal weiter testen.

Gruss

derschorsch
VDR: SW: LinVDR 0.7, MT20050518, Kernel 2.6.14 - HW: TT FF 1.3, TT Budget, WinTV PVR250(32554), MSI KT4V-L, Athlon 900, 256MB RAM, HDD 80GB, AVBoard 1.3, Medion RF RC
Baustelle: SW: LFS 5.1(diskless), vdr-1.3.37-bp4 - HW: DXR3, 2xTT Budget, WinTV PVR250(32564), MSI KT3Ultra2-CL, AthlonXP 1600, 512MB RAM, Medion RF RC

16

Wednesday, December 7th 2005, 9:12pm

Quoted

Original von derschorsch

Quoted

Kann aktuelle ebenfalls nicht testen, da ebenfalls zwei große Platten vorhanden sind...
Schade ;(



Na dann habe ich mal meine Platten gefüllt ... (is allerdings eine fast vanilla 1.3.32) mit einigen Plugins, aber die Stelle ist nach deine Vergehensweise repoduzierbar.
nur die Videopartition war voll, die Systempartition hatte noch genügend platz...
Mainthread:

Source code

1
2
3
4
5
6
7
8
9
(gdb) thread 1
(gdb) bt
#0  0x08110db4 in cSkinSTTNGDisplayMessage::Flush (this=0x8c95570)
    at skinsttng.c:1075
#1  0x081051f8 in cSkins::Flush (this=0x81f73e4) at skins.c:207
#2  0x080bb1ef in cInterface::GetKey (this=0x8c818c0, Wait=true)
    at interface.c:35
#3  0x081275c4 in main (argc=29, argv=0xbffffaf4) at vdr.c:689
Current language:  auto; currently c++


Cutterthread

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(gdb) thread 5
[Switching to thread 5 (process 4733)]#0  0xb7e68114 in ioctl ()
   from /lib/tls/libc.so.6
(gdb) bt
#0  0xb7e68114 in ioctl () from /lib/tls/libc.so.6
#1  0x080aa202 in cDvbOsd::Cmd (this=0x8c9e710, cmd=OSD_Clear, color=0, x0=0,
    y0=0, x1=0, y1=0, data=0x0) at dvbosd.c:110
#2  0x080a9c13 in cDvbOsd (this=0x8c9e710, Left=54, Top=504, OsdDev=5)
    at dvbosd.c:63
#3  0x080aa816 in cDvbOsdProvider::CreateOsd (this=0x8c81930, Left=54, Top=504)
    at dvbosd.c:183
#4  0x080e4854 in cOsdProvider::NewOsd (Left=54, Top=504) at osd.c:738
#5  0x08110911 in cSkinSTTNGDisplayMessage (this=0x8c95570) at skinsttng.c:1052
#6  0x08111100 in cSkinSTTNG::DisplayMessage (this=0x8c819f0)
    at skinsttng.c:1117
#7  0x0810509e in cSkins::Message (this=0x81f73e4, Type=mtWarning,
    s=0x8143f3f "Platte beinahe voll!", Seconds=30) at skins.c:179
#8  0x080bb3d4 in cInterface::Confirm (this=0x8c818c0,
    s=0x8143f3f "Platte beinahe voll!", Seconds=30, WaitForTimeout=false)
    at interface.c:71
#9  0x080ece45 in AssertFreeDiskSpace (Priority=-1) at recording.c:147
#10 0x0809d62f in cCuttingThread::Action (this=0x8c92528) at cutter.c:86
#11 0x0811b716 in cThread::StartThread (Thread=0x8c92528) at thread.c:234
#12 0xb7fb8b63 in start_thread () from /lib/tls/libpthread.so.0
#13 0xb7e6f18a in clone () from /lib/tls/libc.so.6
System: VDR 2.0 unter Debian Wheezy
Aktive Projekte : Radiorecorder Web GUI | DVD-Switch Plugin | targa VFD Plugin | XXV - Xtreme eXtension for VDR

This post has been edited 1 times, last edit by "Hulk" (Dec 7th 2005, 9:15pm)


17

Wednesday, December 7th 2005, 9:22pm

@Hulk
Thanx :welle

Ist das damit jetzt ein offiziell beglaubigter VDR Bug? Ich kann nämlich als absoluter Programmier- und Debug-DAU absolut nix mit den backtraces anfangen.
Wie gesagt, ich schlag mich schon seit fast einem Jahr damit rum, weil ich eigentllich immer zu wenig Platz auf meiner Videopartition habe.

Vielleicht kannst Du ja das ganze in der mailinglist publik machen. Ich kenn mich damit nämlich auch nicht aus.

Gruss

derschorsch
VDR: SW: LinVDR 0.7, MT20050518, Kernel 2.6.14 - HW: TT FF 1.3, TT Budget, WinTV PVR250(32554), MSI KT4V-L, Athlon 900, 256MB RAM, HDD 80GB, AVBoard 1.3, Medion RF RC
Baustelle: SW: LFS 5.1(diskless), vdr-1.3.37-bp4 - HW: DXR3, 2xTT Budget, WinTV PVR250(32564), MSI KT3Ultra2-CL, AthlonXP 1600, 512MB RAM, Medion RF RC

18

Wednesday, December 7th 2005, 10:20pm

Quoted

Original von derschorsch
Vielleicht kannst Du ja das ganze in der mailinglist publik machen. Ich kenn mich damit nämlich auch nicht aus.


Klaus sich für den Report und obrigen Fix bedankt

Quoted

You're absolutely right - calling Interface->Confirm() from a thread is a no-no.


Könntest Du deinen Realname, am besten in der ML posten im Thread "Seqfault of cutting thread on "Low disk space!"" posten :

Quoted

But I take it that you have suggested this fix, right?
If not, please tell the one who did to come forward so
that he can be given credit in the VDR/CONTRIBUTORS
file.


Ich habe nur die losen Enden verbunden... :]
Andreas

EDIT :
um der vdr -- VDR Mailing List beizutreten ...
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
System: VDR 2.0 unter Debian Wheezy
Aktive Projekte : Radiorecorder Web GUI | DVD-Switch Plugin | targa VFD Plugin | XXV - Xtreme eXtension for VDR

This post has been edited 1 times, last edit by "Hulk" (Dec 7th 2005, 10:32pm)


19

Wednesday, December 7th 2005, 10:32pm

@Hulk: danke fürs melden :]

Da komm ich ja zu später Stunde noch zu grossen Ehren.

Allerdings ist der Workaround oben nicht als Fix gedacht, da die Meldung 30 Sekunden lang ist und mit AssumeFreeDiskSpace mit Priority -1 alle 10 Sekunden angestossen wird und damit die MessageQueue mit "Platte beinahe voll!" voll läuft, wenn man nicht eingreift.

Aber das kann ich ja dazuschreiben, wenn ich herausgefunden habe, wie man in die mailinglist postet.


EDIT:

Quoted

um der vdr -- VDR Mailing List beizutreten ...
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Alles klar!

Nochmal danke

Gruss

derschorsch
VDR: SW: LinVDR 0.7, MT20050518, Kernel 2.6.14 - HW: TT FF 1.3, TT Budget, WinTV PVR250(32554), MSI KT4V-L, Athlon 900, 256MB RAM, HDD 80GB, AVBoard 1.3, Medion RF RC
Baustelle: SW: LFS 5.1(diskless), vdr-1.3.37-bp4 - HW: DXR3, 2xTT Budget, WinTV PVR250(32564), MSI KT3Ultra2-CL, AthlonXP 1600, 512MB RAM, Medion RF RC

This post has been edited 1 times, last edit by "derschorsch" (Dec 7th 2005, 10:36pm)