ccebinger / SWPSoSe14

2 stars 1 forks source link

Ausführung der Classfile aus dem Editor fehlerhaft #232

Closed muellerz closed 10 years ago

muellerz commented 10 years ago

Der Editor ruft den Compiler erfolgreich auf, aber die erstellte Classdatei wirft beim Ausführen eine Exception.

Der Aufruf lautet: "java -XX:-UseSplitVerifier -cp "

Bei einem simplen HelloWorld wird folgende Exception geworfen: Exception in thread "main" java.lang.ClassFormatError: Truncated class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

Zelldon commented 10 years ago

Kann ich nicht nachvollziehen

Zelldon commented 10 years ago

Eingabe Datei mit der es nicht klappt am besten hier einfuegen oder schicken ansonsten kann ich dir nicht helfen ^^

muellerz commented 10 years ago

Leon meinte, dass es vielleicht an einer zu neuen JVM-Version liegen kann. java -version gibt folgende Ausgabe: java version "1.7.0_55" OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1) OpenJDK Client VM (build 24.51-b03, mixed mode, sharing)

Ich kann die generierten Class-Dateien nämlich auch nicht aus dem Terminal starten.

Zelldon commented 10 years ago

Lies mein Kommentar

Zelldon commented 10 years ago

und an der JVM Version liegt es nicht hab sogar eine neuere Version, also wie gesagt das Rail Programm mal hochladen oder per Mail schicken das ich es testen kann.

kretzschi commented 10 years ago

Lieber im github, auch für zukünftige Sachen, so dass sich auch andere am Fixen erfreuen können :D

Zelldon commented 10 years ago
 $ 'main'
 \
  -[Hello World]-o-#

Baut mir super und laesst sich auch ausfuehren?

$ java Main
Hello World
Zelldon commented 10 years ago

Was sagt den der Compiler beim Ausfuehren?

Zelldon commented 10 years ago

Evtl. ein Tipp nimm mal dein Whitespace aus dem filenamen^^ (macht man unter linux net) vllt compiliert er es ja erst garnich das wuerde deine 0 Bytes in dem Classfile erklaeren.

muellerz commented 10 years ago

Das Whitespace hatte dann bei mir auch rausgenommen, aber es hatte nichts geändert. Der Compiler gab dann einen Speicherzugriffsfehler vom Backend aus. Mit dem letzten Pull sieht es so aus: * Error in `./Compiler': free(): invalid pointer: 0x08bb9c00 * Abgebrochen (Speicherabzug geschrieben)

Zelldon commented 10 years ago

Ganz ehrlich ich hab kein Ahnung was bei dir Falsch laeuft also bei mir compiliert es und ist auch Ausfuehrbar.

Deshalb gehen wir alles mal Schritt fuer Schritt durch:

  1. Auf welchem Betriebssystem Arbeitest du und welche Version.
  2. Welchen Compilier benutzt du ? (gcc/clang was anderes?)
  3. Wie sieht dein c++ Compiler Aufruf aus?
    • Wie sieht die Rueckgabe aus?
  4. Wie sieht dein rail Compiler Aufruf aus?
    • Wie sieht die Rueckgabe aus?
  5. Sieht dein Testfile immer noch so aus?
  6. Wie sieht dein Java Aufruf aus?
    • Wie sieht die Rueckgabe aus?
muellerz commented 10 years ago

Ich glaub, meine VM will mich trollen. Jetzt läuft Hello World wieder... Aber der Vollständigkeit halber:

1) Ubuntu 14.04 LTS 32 Bit 2) gcc-Version 4.9.0 20140405 (experimental) [trunk revision 209157](Ubuntu 4.9-20140406-1ubuntu1) 3) 17:03:11 \ Build of configuration Debug for project Compiler ** make all Building file: ../src/frontend/parser/Parser.cpp Invoking: GCC C++ Compiler g++ -DGXX_EXPERIMENTAL_CXX0X -D__cplusplus=201103L -I"/home/muellerz/SWP/Repository/SWPSoSe14/projekt-compiler/src" -O0 -g3 -Wall -c -fmessage-length=0 -std=c++11 -pedantic -MMD -MP -MF"src/frontend/parser/Parser.d" -MT"src/frontend/parser/Parser.d" -o "src/frontend/parser/Parser.o" "../src/frontend/parser/Parser.cpp" Finished building: ../src/frontend/parser/Parser.cpp

[...]

Building target: Compiler Invoking: GCC C++ Linker g++ -std=c++11 -o "Compiler" ./src/frontend/parser/Parser.o ./src/frontend/lexer/Lexer.o ./src/frontend/Graphs.o ./src/frontend/adjacency_list.o ./src/frontend/frontend.o ./src/common/Env.o ./src/backend/unittest/classfile_writer_test.o ./src/backend/unittest/constant_pool_test.o ./src/backend/codegen/Bytecode.o ./src/backend/codegen/local_variable_stash.o ./src/backend/classfile/Bytecode_writer.o ./src/backend/classfile/Lambda_classfile_writer.o ./src/backend/classfile/Lambda_interface_writer.o ./src/backend/classfile/classfile_writer.o ./src/backend/classfile/constant_pool.o ./src/backend/backend.o ./src/backend/main.o ./src/main.o
Finished building target: Compiler

17:03:49 Build Finished (took 38s.779ms)

4) ./Compiler -i HelloWorld.rail -o HelloWorld.class

5) Jupp. Ist unverändert.

6) java -XX:-UseSplitVerifier -cp . HelloWorld

Zelldon commented 10 years ago

alles klar dann schliess ich das mal ^^