udrecemu: Segmentation fault

Digital Recording
tartanwalt
Neugieriger
Neugieriger
Beiträge: 15
Registriert: Sonntag 9. Januar 2005, 17:12

udrecemu: Segmentation fault

Beitrag von tartanwalt »

Hi,

spiele die letzten Tage ein wenig mit der udrec_suite rum und habe jetzt scheinbar ein "grösseres" Problem.

Ich nehme mit meiner dbox direkt auf einen NFS Server auf. Bei Versuchen mit kleineren Dateien funktioniert das Umwandeln in ein mpg File wunderbar. Heute habe ich dann einen Aufnahem > 2300 MB gemacht und due udrec_suite ist mit folgender Fehlermeldung abgestürzt:

/usr/local/bin/udrecemu: line 19: 16640 Segmentation fault /usr/local/bin/nfrec $*

Ein händisches Anstoßen von udrecemu für das File schmiert mit gleicher Meldung ab. Installiert hatte ich version 0.4.1 ... ein Downgrading auf 0.4.0 brachte auch keinen Erfolg.

OS auf dem Server ist Fedora 2.


Vielleicht hat ja jemand eine "passende Idee".


Cheers
Walt
alsuffndruff
Einsteiger
Einsteiger
Beiträge: 264
Registriert: Montag 9. Juni 2003, 21:18

Beitrag von alsuffndruff »

Hol dir mal udrecemu aus dem cvs der udrec_suite. Da habe ich inzwischen einige Änderungen bez. Sonderzeichen gemacht. Auch werden dort die Übergabeparameter auf ihre Sinnhaftigkeit überprüft und man ist beim händischen Aufruf nicht mehr an die Namenskonvetion bei den Filmdateien (die können jetzt auch blabla.mpg, blubb.ts, blubber.mpv etc. heissen). Nur das xml file muss nach wie vor die namensform "*datum_uhrzeit.xml" haben.

Ansonsten: Hat udrecemu bzw. nfrec (udrecemu ist nur ein shellscript, das ein paar UMgebeungsvariablen setzt und dann direkt nfrec aufruft) sonst nichts ausgegeben? Existiert nach dem Absturz eine Datei mit Namen "core" in dem Verzeichnis? Wenn ja würde mich das interessieren.


Gruss
Kai
tartanwalt
Neugieriger
Neugieriger
Beiträge: 15
Registriert: Sonntag 9. Januar 2005, 17:12

Beitrag von tartanwalt »

Hi Kai,

habe nun einen Film aufgenommen mit max Grösse der ts Files von 1024 MB. Nun bricht udrecemu nicht direkt nach der Aufnahme ab sonder erst später.


Starte ich udrecemu von Hand mit Angabe des xml und der ts Files dann sind nach dem Absturz die folgenden Files in tmp vorhanden, dabei ist xyz.movie über 2 GB gross:


XVY.movie
XVY.01.mp2
XVY.mp2
XVY.mpv
XVY.xml

Nach Update von udrecemu / nfrec aus dem CVS bleibt das ganze gleich. Nach komplett Update aus CVS ebenfalls.

Das sieht mir fast aus als hätte irgendein Tool Probleme mit der 2 GB Grenze. Das FS an sich kann es nicht sein, ist Kernel 2.6 mit ext3.

Wird in dem Code irgendwo ein Systemkommando an dieser Stelle aufgerufen das vielleicht das problem sein könnte ?


Cheers
Walt
alsuffndruff
Einsteiger
Einsteiger
Beiträge: 264
Registriert: Montag 9. Juni 2003, 21:18

Beitrag von alsuffndruff »

Hallo,
nach dem update sollte zumindest die ".movie" Datei nicht mehr erzeugt werden. Macht udrecemu denn gar keinen output? Wenn doch, starte doch mal den Befehl ud_demux.pl von Hand so wie er von udrecemu ausgegeben wurde.

Wenn nein, ändere in udrecemu.cpp den Teil (habe die Datei gerade nicht zur Hand), der udprocess aufruft, irgendwas mit

Code: Alles auswählen

new UdProcess(false,false)
in

Code: Alles auswählen

new UdProcess(true,true)
Compiliere und starte dann udrecemu nochmal (bzw. nfrec direkt, allerdings vorher die Umgebungsvariablen setzen). Dann solltest du mehr output bekommen, dann weiss man vielleicht eher wo es hakt.

Ich habe bei mir übrigens keine Probleme mit größeren Files, ich glaube nicht dass es daran liegt (wenn doch: mplex version!!). Aber man wird sehen.

Gruss
Kai
tartanwalt
Neugieriger
Neugieriger
Beiträge: 15
Registriert: Sonntag 9. Januar 2005, 17:12

Beitrag von tartanwalt »

Habe folgenden Output zu bieten:

udrecemu: START
Command() /usr/local/bin/ud_demux.pl -i=/pathtotmp/XYZ.movie -o=/pathtotmp --java=/usr/java/j2sdk1.4.2_03/bin/java --ini=/usr/local/lib/jar/pX_43.ini --jar=/usr/local/lib/jar/pX.jar
/usr/local/bin/udrecemu: line 19: 28092 Segmentation fault /usr/local/bin/nfrec $*

Wobei ud_demux.pl genau so wie hier zu sehen noch gestartet wird und in der Prozess Liste auftaucht. Ist ud_demux fertig sind unter tmp die bereits genannten Files zu finden.

Starte ich ud_demux.pl wie oben per hand habe ich folgende Ausgabe am Ende:

summary of created media files:
.Video (m2v): 133432 Frames 01:28:57.280 /pathtotmp/XYZ_01_00.mpv
Audio 0 (mp2): 222387 Frames 01:28:57.288 0/0/64/14832 /pathtotmp/XYZ_01_00.mp2
=> 2113935900 bytes written...

und folgende Files unter tmp:
XYZ.movie
XYZ_01_00.mpv
XYZ.xml

mplex version:
mjpegtools mplex-2 version 1.6.2 (2.2.3)
alsuffndruff
Einsteiger
Einsteiger
Beiträge: 264
Registriert: Montag 9. Juni 2003, 21:18

Beitrag von alsuffndruff »

Sorry aber hier stuimmt was nicht.


Wenn du udrecemu aus dem cvs benutzt, wird KEIN movie file mehr erzeugt. Wahrscheinlich benutzt du noch ein "altes" udrecemu.
Aber zumindest scheint ud_demux.pl zu funktionieren.

Dann musst du den steinigen Weg gehen und wie von mir weiter oben beschrieben mal die Aussagekraft des Outputs von udrecemu erhöhen.

Einfach in udrecemu.cpp die Zeile

Code: Alles auswählen

pDemuxManager = new UdProcess(false,false);
durch

Code: Alles auswählen

pDemuxManager = new UdProcess(true,true);
ersetzen, neu compilieren und den output mal posten. Kannst du vielleicht mit einem debugger umgehen? Leider habe ich hier dieses Problem nicht, so dass ich nicht so richtig helfen kann. Wenn du an der Stelle also noch tiefer bohren könntest wäre das hilfreich für die Fehlersuche.
tartanwalt
Neugieriger
Neugieriger
Beiträge: 15
Registriert: Sonntag 9. Januar 2005, 17:12

Beitrag von tartanwalt »

... was mach ich falsch ?!?

Code: Alles auswählen

tar xvfz udrec_suite-0.4.1.tar.gz
mv udrec_suite-0.4.1 udrec_suite
cd udrec_suite

export CVSROOT=:pserver:anonymous@cvs.sourceforge.net:/cvsroot/udrecsuite
cvs checkout udrec_suite


vi ./src/nfrec/udrecemu.cpp
...
QString s;
pDemuxManager = new UdProcess(true,true);
pDemuxManager->addArgument(UdrecConfig::getUdDemux().c_str());
...


./configure --with-j2sdk=/usr/java/j2sdk1.4.2_03/bin
make
make install
alsuffndruff
Einsteiger
Einsteiger
Beiträge: 264
Registriert: Montag 9. Juni 2003, 21:18

Beitrag von alsuffndruff »

tartanwalt hat geschrieben:... was mach ich falsch ?!?

Code: Alles auswählen

tar xvfz udrec_suite-0.4.1.tar.gz
mv udrec_suite-0.4.1 udrec_suite
cd udrec_suite
Das kannst du dir schenken, da du ja alles aus dem CVS holst. Der Rest ist soweit ok. Wenn du die Sachen aus dem CVS holst hast du danach ein UNterverzeichnis udrec_suite. Darin kannst du weiterarbeiten, dann sollte es gehen.

Bedenke aber bitte, dass du, wenn du die sourcen aus dem cvs holst
erst

Code: Alles auswählen

autoreconf -i
aufrufen musst, bevor du configure wie gewohnt starten kannst.
Gruss
Kai
tartanwalt
Neugieriger
Neugieriger
Beiträge: 15
Registriert: Sonntag 9. Januar 2005, 17:12

Beitrag von tartanwalt »

... ok, das autoreconf wars.

Die CVS Sourcen lassen sich jedoch nicht durchkompilieren

Code: Alles auswählen

In file included from cutmanager.h:6,
                 from usgui.h:23,
                 from usgui.cpp:1:
../common/udprocess.h:15:30: stringoperations.h: No such file or directory
Habe stringoperations.h in udprocess.h aukommentiert, jedoch gibt es dann später wieder Probleme.

Code: Alles auswählen

mpgmanager.cpp: In constructor `MpgManager::MpgManager(UdrecXmlFile*)':
mpgmanager.cpp:20: error: `StringOperations' undeclared (first use this
   function)
mpgmanager.cpp:20: error: (Each undeclared identifier is reported only once for
   each function it appears in.)
mpgmanager.cpp:20: error: syntax error before `::' token
alsuffndruff
Einsteiger
Einsteiger
Beiträge: 264
Registriert: Montag 9. Juni 2003, 21:18

Beitrag von alsuffndruff »

oops, die Datei ist neu. Habe ich vergessen die einzuchecken?

Ja tatsächlich, mein Fehler, sorry. Das tut mir leid, kann ich erst heute abend fixen. Ich schick dir heute abend einen tarball, wenn du magst. Das sourceforge cvs braucht manchmal ein paar Stunden bis Tage, bis es Änderungen an die Nutzer weitergibt.

Gruss
Kai
tartanwalt
Neugieriger
Neugieriger
Beiträge: 15
Registriert: Sonntag 9. Januar 2005, 17:12

Beitrag von tartanwalt »

alsuffndruff hat geschrieben:Ich schick dir heute abend einen tarball, wenn du magst.
Yep, super. Danke.
tartanwalt
Neugieriger
Neugieriger
Beiträge: 15
Registriert: Sonntag 9. Januar 2005, 17:12

Beitrag von tartanwalt »

Hi Kai,

hab die neuen Sourcen kompiliert und udrecemu nochmals aufgerufen.
Und es entsteht wirklich kein .movie mehr ;)

Code: Alles auswählen

XYZ.r1
XYZ.r1.pts
XYZ.r2
XYZ.r2.pts
XYZ.r3
XYZ.r4.pts
XYZ.xml
dann wird demuxt
und über bleiben

Code: Alles auswählen

XYZ.mp2
XYZ.mpv
XYZ.xml
enden tut das dann mit:

Code: Alles auswählen

Tue Jan 11 22:15:35 2005 udrecemu: STOP
... sollte da jetzt nicht automatisch auch noch das umwandeln in mpg folgen ?!?


Gruß
Walt
alsuffndruff
Einsteiger
Einsteiger
Beiträge: 264
Registriert: Montag 9. Juni 2003, 21:18

Beitrag von alsuffndruff »

Prima, das heisst dein ursprüngliches Probhlem ist behoben :-)

Die Umwandlung in mpg etc. erfolgt nur dann, wenn udrecemu im Rahmen der Aufnahme eingesetzt wurde (so wie udrec). Wenn udrecemu von Hand aufgerufen wurde, emuliert es nur udrec, d.h. es erzeugt aus den ts Dateien die mpv, mp2 etc. Dateien, die dann entsprechend mit usgui weiterverarbeitet werden können. Stell dir das so vor, wie wenn du udrec von Hand aufrufst (nicht mit "udrec_suite start") , dann wirst du auch nur die entsprechenden mpv,mp2,ac3 Dateien erhalten.

Gruss
Kai
tartanwalt
Neugieriger
Neugieriger
Beiträge: 15
Registriert: Sonntag 9. Januar 2005, 17:12

Beitrag von tartanwalt »

ok...

Dann zur Vervollständigun noch: Das Umwandeln in mpg sowohl händisch mit mplex als auch über usgui funktioniert anschließend auch ohne Probleme

Danke Kai für die Hilfe und das super Tool !

Gruß
Walt