[GELÖST] Compile-Problem: 'File truncated'

otherland

Neuer User
Mitglied seit
14 Okt 2008
Beiträge
29
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich baue seit vielen Monaten halbwegs regelmäßig freetz-trunk für die 7270 - das ganze auf Fedora-12 Linux.

Bisher hatte ich nie Schwierigkeiten - seit einigen Wochen bekomme ich aber beim Versuch die Firmware zu bauen folgenden Fehler

Code:
[...]
if [ ! -e source/.echo_item_start ]; then       echo -n "---> "; case "" in BIN)        echo -n "package/: " ;; LIB)     echo -n "library/: " ;; TOOL)   echo -n "tool/: " ;; *) echo -n "kernel: " ;; esac; rm -f source/.echo_item_build; touch source/.echo_item_start; fi; echo -n " configuring... ";
 configuring... cp make/linux/Config.ur8-8mb_26.7270_04.80 source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2/.config
cmd() { PATH="/home/chris/Software/freetz-trunk/toolchain/target/bin:/home/chris/Software/freetz-trunk/toolchain/kernel/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/sbin:/opt/real/RealPlayer:/home/chris/bin:/opt/real/RealPlayer" LD_RUN_PATH="/usr/lib/freetz" make -j2  "$@"  || { printf "\n\\033[33m%s\\033[m\n" "ERROR: Build failed.";  exit 1; } };        if [ -e source/.echo_item_start -a ! -e source/.echo_item_build ]; then echo -n "building... "; touch source/.echo_item_build; fi; cmd -C source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2 \
                CROSS_COMPILE="mipsel-unknown-linux-gnu-" \
                KERNEL_MAKE_PATH="/home/chris/Software/freetz-trunk/toolchain/kernel/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/sbin:/opt/real/RealPlayer:/home/chris/bin:/opt/real/RealPlayer" \
                ARCH="mips" \
                KERNEL_LAYOUT="8mb_26" \
                oldconfig
make[1]: Entering directory `/home/chris/Software/freetz-trunk/source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2'
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf.o: file not recognized: File truncated
collect2: ld returned 1 exit status
make[2]: *** [scripts/kconfig/conf] Error 1
make[1]: *** [oldconfig] Error 2
make[1]: Leaving directory `/home/chris/Software/freetz-trunk/source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2'

ERROR: Build failed.
make: *** [source/kernel/ref-8mb_26-7270_04.80/.configured] Error 1

Ich habe bereits nach der Fehlermeldung gegoogelt, leider aber nichts hilfreiches gefunden.

Ausserdem habe ich den Trunk komplett neu ausgecheckt, und mit 'make menuconfig; make' versucht neu anzufangen.
Ebenfalls probiert habe ich sowohl mein altes, vorher funktionstüchtiges .config, oder auch ein komplett 'jungfräuliches' .config.

Alle Versuche landen wieder beim selben Fehler.

Einziger Ansatzpunkt bis jetzt, der aber auch in einer Sackgasse gelandet ist:

Laut Wiki brauche ich automake-1.9 (stimmt diese Anforderung noch?) - ich habe automake-1.11 installiert. Diese alte Version konnte ich nur noch als SRPM auftreiben. Der Versuch es zu compilieren schlägt aber fehl, weil einer der Tests aus der Testsuite 'Failed', und der Compile deshalb abgebrochen wird.

Ich weis leider nicht mehr, ob ich irgendwann in einer Aufräumaktion mal die alte automake deinstalliert habe, und es seitdem nicht mehr geht.

Kennt jemand dieses Problem, oder hat eine Idee wie ich weiter debuggen könnte?

Danke,

-otherland

LÖSUNG:
Mein Build-Directory liegt auf einer XFS-Raidpartition. XFS hat wie ext4 Robustheitsprobleme bei Systemabstürzen.

Mein Dateisystem hatte anscheinend nach einem solchen Absturz schon vor einiger Zeit einen Schaden davongetragen, von dem ich im normalen Betrieb nichts bemerkt habe, der aber zu dem beobachteten Problem beim Compilieren geführt hat.

Nach Löschen von freetz-trunk, xfs_repair und neuem Checkout hat alles wieder funktioniert.
 
Zuletzt bearbeitet:
Lösche doch mal die Datei /home/chris/Software/freetz-trunk/source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2/scripts/kconfig/conf.o.
 
Lösche doch mal die Datei /home/chris/Software/freetz-trunk/source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2/scripts/kconfig/conf.o.

Hallo Ralf,

vielen Dank für Deine Hilfe - habe ich versucht, aber leider wird die Datei (wieder mit der Größe null) einfach neu erzeugt, und der Compile bricht auf dieselbe Art wieder ab:

Code:
[chris]$ rm -f /home/chris/Software/freetz-trunk/source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2/scripts/kconfig/conf.o
[chris]$ make
if [ ! -e source/.echo_item_start ]; then       echo -n "---> "; case "" in BIN)        echo -n "package/: " ;; LIB)     echo -n "library/: " ;; TOOL)   echo -n "tool/: " ;; *) echo -n "kernel: " ;; esac; rm -f source/.echo_item_build; touch source/.echo_item_start; fi; echo -n " configuring... ";
 configuring... cp make/linux/Config.ur8-8mb_26.7270_04.80 source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2/.config
cmd() { PATH="/home/chris/Software/freetz-trunk/toolchain/target/bin:/home/chris/Software/freetz-trunk/toolchain/kernel/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/sbin:/opt/real/RealPlayer:/home/chris/bin:/opt/real/RealPlayer" LD_RUN_PATH="/usr/lib/freetz" make -j2  "$@"  || { printf "\n\\033[33m%s\\033[m\n" "ERROR: Build failed.";  exit 1; } };        if [ -e source/.echo_item_start -a ! -e source/.echo_item_build ]; then echo -n "building... "; touch source/.echo_item_build; fi; cmd -C source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2 \
                CROSS_COMPILE="mipsel-unknown-linux-gnu-" \
                KERNEL_MAKE_PATH="/home/chris/Software/freetz-trunk/toolchain/kernel/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/sbin:/opt/real/RealPlayer:/home/chris/bin:/opt/real/RealPlayer" \
                ARCH="mips" \
                KERNEL_LAYOUT="8mb_26" \
                oldconfig
make[1]: Entering directory `/home/chris/Software/freetz-trunk/source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2'
  HOSTCC  scripts/kconfig/conf.o
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf.o: file not recognized: File truncated
collect2: ld returned 1 exit status
make[2]: *** [scripts/kconfig/conf] Error 1
make[1]: *** [oldconfig] Error 2
make[1]: Leaving directory `/home/chris/Software/freetz-trunk/source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2'

ERROR: Build failed.
make: *** [source/kernel/ref-8mb_26-7270_04.80/.configured] Error 1
[chris]$ ls -l /home/chris/Software/freetz-trunk/source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2/scripts/kconfig/conf.o
-rw-r--r--. 1 chris chris :46 /home/chris/Software/freetz-trunk/source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2/scripts/kconfig/conf.o

Auch 'make clean/distclean/dirclean' habe ich schon probiert - auch das führt zu genau demselben Fehler.
 
Zuletzt bearbeitet:
Von der Größe 0 hattest Du vorhin nichts geschrieben. Dann gibt es wohl einen Fehler beim Erstellen der Datei, der aber nicht dazu führt, daß make abgebrochen wird. Sehr seltsam.
 
"make menuconfig" funktioniert aber? Hier wird ja der Host Compiler benutzt...

MfG Oliver
 
Von der Größe 0 hattest Du vorhin nichts geschrieben. Dann gibt es wohl einen Fehler beim Erstellen der Datei, der aber nicht dazu führt, daß make abgebrochen wird. Sehr seltsam.
Sorry - ja Du hast recht, dass hatte ich unterschlagen.
Das war das erste was ich wg. 'file truncated' überprüft hatte. Die Datei conf.o ist einfach leer.

Ich habe daraufhin stdout und stderr des 'make' in eine Datei umgeleitet und auf 'error', 'ERROR' und 'conf.o' hin untersucht, konnte aber nichts auffälliges erkennen.

Eine Datei 'conf.o' wird noch an anderer Stelle (/home/chris/Software/freetz-trunk/source/host-tools/busybox-1.16.1/scripts/kconfig) erzeugt - dort ist sie aber anscheinen in Ordnung:

Code:
[chris]$ pwd
/home/chris/Software/freetz-trunk/source/host-tools/busybox-1.16.1/scripts/kconfig
[chris]$ file conf.o 
conf.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
[chris]$ ls -l conf.o
-rw-r--r--. 1 chris chris 19408 2010-04-12 22:10 conf.o

OOPS: mir fällt gerade auf - müsste da nicht ein mips-Object erzeugt werden, nicht ein x86-64? Das sollte doch ein Cross-Compile für die Box sein?
 
Zuletzt bearbeitet:
"make menuconfig" funktioniert aber? Hier wird ja der Host Compiler benutzt...

MfG Oliver
Ja, 'make menuconfig' läuft ohne Probleme durch, und erzeugt auch ein unauffälliges (Vergleich mit gesichertem Original) .config
 
Verwende ich evtl. eine deutlich andere Compilerversion als ihr? Ich erinnere mich dass in den letzten Wochen ein Update vom GCC über die Fedora-Updates gekommen ist:

Code:
[chris]$ gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.3 20100127 (Red Hat 4.4.3-4) (GCC)
[
 
Bleibt als einzige aktuell verwertbare Spur die Frage nach dem automake-1.9:

Ist dieses Requirement noch aktuell? Habt ihr diese Version (zusätzlich zur aktuellen Version?) bei Euch installiert?

Ich konnte diese Version leider bis jetzt nicht auftreiben, da der Compile wegen eines Testcase der 'Failed' abbricht.
 
Ich hab ubuntu 10.04 beta2 mit automake 1.11, bei mir keinerlei Probleme.
 
@otherland: mit automake hat es definitiv nichts zu tun, denn beim Übersetzen des Kernels wird kein automake gebraucht.

Welches Dateisystem nutzt Du, ext4? Wenn ja google mal nach "delayed allocation" und "zero-length". Bin mir zwar überhaupt nicht sicher, dass es daran liegt, aber denkbare Erklärung wäre es schon. Mach' mal ein Stress-Test Deines Systems, indem Du z.B. aktuelle vanilla Version des kernels parallel in 2-3 Fenstern übersetzt. Das angestrebte Ziel, dasselbe Problem irgendwie anders zu provozieren, denn ich vermute stark, es liegt an Deinem System und hat mit freetz leider nichts zu tun...
 
@markuschen & er13: Vielen Dank - das erspart mir auf jeden Fall schon mal die Suche nach der alten automake-Version :-/

@ er13: der Compile läuft in meinem /home - das ist XFS auf Software-RAID5.

[Update: die von er13 vorgeschlagenen Google-Suche zeigt, dass XFS mehr oder weniger dieselben Probleme mit delayed-allocation hat wie ext4 - also ist XFS kein Gegenargument. Trotzdem zweifle ich daran dass das die Erklärung ist - ich sehe keine Crashes, in deren Folge die Dateilänge null wäre, und das Problem tritt nur beim freetz-Compile und immer an derselben Stelle auf]

Es laufen gerade zwei Kernel-Compiles parallel; load auf beiden Cores fast 100%, bis jetzt keine Auffälligkeiten. Ansonsten compiliere ich oft MythTV, dabei habe ich noch keine Probleme gehabt. Ich werde mir mal ein paar weitere Stresstests ausdenken.

Komisch ist, dass das Problem immer an derselben Stelle auftritt. Wenn es ein generelles, sporadisches Systemproblem wäre, würde ich vermuten dass es immer an anderen Stellen auftritt.

Andererseits scheine ich tatsächlich der einzige zu sein der dieses Problem hat - Google findet mit 'freetz' und einem beliebigen Ausschnitt der Fehlermeldung absolut nix relevantes :-(
 
Zuletzt bearbeitet:
Laß Dir doch mal das Kommando anzeigen, das ausgeführt wird, und rufe dann den Compiler von Hand auf. Was passiert dann?

@RalfFriedl
Sorry, ich bin wohl gerade schwer von Begriff: wie 'lasse ich mir das Kommando anzeigen'?

In der Ausgabe von make seher ich nur
Code:
[...]
if [ ! -e source/.echo_item_start ]; then       echo -n "---> "; case "" in BIN)        echo -n "package/: " ;; LIB)     echo -n "library/: " ;; TOOL)   echo -n "tool/: " ;; *) echo -n "kernel: " ;; esac; rm -f source/.echo_item_build; touch source/.echo_item_start; fi; echo -n " configuring... ";
 configuring... cp make/linux/Config.ur8-8mb_26.7270_04.80 source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2/.config
cmd() { PATH="/home/chris/Software/freetz-trunk/toolchain/target/bin:/home/chris/Software/freetz-trunk/toolchain/kernel/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/sbin:/opt/real/RealPlayer:/home/chris/bin:/opt/real/RealPlayer" LD_RUN_PATH="/usr/lib/freetz" make -j2  "$@"  || { printf "\n\\033[33m%s\\033[m\n" "ERROR: Build failed.";  exit 1; } };        if [ -e source/.echo_item_start -a ! -e source/.echo_item_build ]; then echo -n "building... "; touch source/.echo_item_build; fi; cmd -C source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2 \
                CROSS_COMPILE="mipsel-unknown-linux-gnu-" \
                KERNEL_MAKE_PATH="/home/chris/Software/freetz-trunk/toolchain/kernel/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/sbin:/opt/real/RealPlayer:/home/chris/bin:/opt/real/RealPlayer" \
                ARCH="mips" \
                KERNEL_LAYOUT="8mb_26" \
                oldconfig
make[1]: Entering directory `/home/chris/Software/freetz-trunk/source/kernel/ref-8mb_26-7270_04.80/linux-2.6.19.2'
  HOSTLD  scripts/kconfig/conf

Das ist aber nichts was ich 'von Hand ausführen' könnte ...

Hast Du einen Tip?
 
Gelöst!

Übergebe mal V=1 an das Kernel-Makefile, dann sollten die Anweisungen angezeigt werden.

@RalfFriedl:
Vielen Dank für den Tip - da habe ich wieder etwas gelernt :)

@er13:
Danke für den entscheidenden Hinweis - das Problem lag tatsächlich im Bereich des Dateisystems!

Nach dem Tip mit den Robustheitsproblemen von ext4, und der Erkenntnis dass XFS ähnliche Probleme hat, habe ich mal meine Logs durchsucht, und bin dabei auf mehrere Einträge dieser Art gestossen:
Code:
Apr 12 22:10:16 kernel: Filesystem "md1": XFS internal error xfs_da_do_buf(2) at line 2112 of file fs/xfs/xfs_da_btree.c.  Caller 0xffffffffa0c2db9b
Google hat dann zu dem Hinweis geführt, dass diese Probleme auf kaputte Verzeichniseinträge im Dateisystem hindeuten.

xfs_check hat das bestätigt, xfs_repair hat einige alte Object-Files nach lost+found verschoben, und danach ging plötzlich alles wieder wie gewohnt.

Nochmal recht herzlichen Dank an alle die geholfen haben!
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.