Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 06.10.2012, 21:12 Titel: Aborted(Core dumped) |
|
|
Hi
Ab und an beendet sich mein selbst geschriebenes Programm kurz nach dem Starten einfach und gibt mir die Fehlermeldung "Aborted(Core dumped)" im Terminal aus. Manchmal muss ich das ganze Programm 2 bis 3 mal neu starten bis es funktioniert, manchmal funktioniert es auf Anhieb...
Was bedeutet diese Meldung und woran könnte es liegen? |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 06.10.2012, 22:57 Titel: |
|
|
Ich würde vermuten, das gehört eher in den Linux spezifischen Teil.
Für mich sieht das so aus, als würdest du Speicher doppelt freigeben. Verwendest du DeAllocate oder eine verwandte Funktion?
Am einfachsten ist es natürlich, das Programm mit -g zu compilieren und ein gdb -g core programm (bin mir nicht ganz sicher, weißt du als Linux-User vermutlich besser) zu machen. Dann kriegst du schon mal die fehlerhafte Zeile raus. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4701 Wohnort: ~/
|
Verfasst am: 06.10.2012, 23:04 Titel: |
|
|
Beim doppelten Freigeben eines Speichers erhalte ich für gewöhnlich die Meldung "double free or corruption". Ich weiß aber nicht, was diverse Bibliotheken so anstellen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 06.10.2012, 23:09 Titel: |
|
|
MOD hat Folgendes geschrieben: | Verwendest du DeAllocate oder eine verwandte Funktion? |
Nein
MOD hat Folgendes geschrieben: | Am einfachsten ist es natürlich, das Programm mit -g zu compilieren und ein gdb -g core programm .bin mir nicht ganz sicher, weißt du als Linux-User vermutlich besser |
Leider nein.
Habe so etwas vorher noch nie gemacht, aber sobald ich gdb über mein Spiel laufen lasse, erhalte ich auch keine Ergebnisse.
Zuletzt bearbeitet von Westbeam am 06.10.2012, 23:38, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 06.10.2012, 23:32 Titel: |
|
|
versuche
Code: | fbc app.bas -g && valgrind /app |
wen es gfx nutzt, kann es sein, das ein block mit x11lib fehler am fang auftaucht. danach sollte es dann fehlerfrei sein. sollten denoch speichervehler auftreten, reportet es dir diese. poste daraufhin mal solch einen log.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4701 Wohnort: ~/
|
Verfasst am: 06.10.2012, 23:36 Titel: |
|
|
@"nemored hat Folgendes geschrieben" - habe ich das?  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 06.10.2012, 23:51 Titel: |
|
|
@nemored:
Ist doch gar nicht wahr. Du musst nur mal genau hinschauen, da steht "MOD". ..
. *unschuldiges Preifen*
Das ist die Ausgabe von "fbc app.bas -g && valgrind /app":
Code: | /home/alex/a/X-tfb/inc/player.bi(164) warning 4(1): Suspicious pointer assignment
/home/alex/a/X-tfb/inc/player.bi(241) warning 4(1): Suspicious pointer assignment
==18636== Invalid read of size 8
==18636== at 0xA63E4B8: ??? (in /usr/lib/fglrx/dri/fglrx_dri.so)
==18636== by 0x9BD8C8B: ??? (in /usr/lib/fglrx/dri/fglrx_dri.so)
==18636== Address 0x6e34288 is 4,464 bytes inside a block of size 4,468 alloc'd
==18636== at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==18636== by 0xA38990F: ??? (in /usr/lib/fglrx/dri/fglrx_dri.so)
==18636== |
Die beiden entsprechenden Zeilen(164 und 241)und ihre Zusammenhänge sehen so aus:
Code: | Type explosion
mesh as any ptr
energy as Double
nex as explosion ptr
prev as explosion ptr
End Type
Dim Shared As Explosion Ptr expl_first, expl_last, expl2, oldexpl
Sub MakeExplosion(x As Double, y As Double, z As Double)
expl2=New explosion
if expl_first=0 then expl_last=expl2: expl_first=expl2 else expl_last->nex=expl2 'Zeile 164
expl_last=expl2
expl2->mesh=CreateSphere()
PositionEntity expl2->mesh,x,y,z
EntityColor expl2->mesh,202,167,97
EntityFX expl2->mesh,1
EntityTexture expl2->mesh,expltex
EntityBlend expl2->mesh,3
End Sub
Sub UpdateExplosions()
expl2 =expl_first
dim Oldexpl as explosion ptr
Do Until expl2=0
ScaleEntity expl2->mesh,expl2->energy,expl2->energy,expl2->energy
expl2->energy+=0.2
EntityAlpha expl2->mesh,1-expl2->energy/3
If expl2->energy>=3 Then HideEntity expl2->mesh
Oldexpl=expl2
If expl2 <> 0 Then expl2=expl2->nex 'Zeile 241
Loop
End Sub |
|
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 07.10.2012, 00:54 Titel: |
|
|
Ich würde mal generell genau schauen, warum der Compiler die Stellen ankreidet. Denn der hat meistens recht. |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 07.10.2012, 01:21 Titel: |
|
|
Ich finde da allerdings keinen Fehler. Abgesehen handhabe ich die Laser UDTs genau auf die selbe Weise, und da gibt es keine Fehler.
Das der Compiler mich nicht anlügt, ist mir schon klar. |
|
Nach oben |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 07.10.2012, 11:00 Titel: |
|
|
Ich könnte mir das nur so erklären das die Variablen im UDT nicht auf 0 gesetzt werden. Unter Windows setzt FB die auf 0, vielleicht Linux aber nicht. Versuch doch mal einfach nach dem new explosion noch alle Variablen von Hand auf 0 zu setzen. |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 07.10.2012, 11:26 Titel: |
|
|
Wenn ich die OpenB3D Zeilen aus den Subs rausnehme, compiliert es ohne warnings. Eine Idee wäre, dass lokale, gleichnamige Variablen, die globalen überdecken. Aus deinem Code kann ich das aber nicht schließen.
Möglicherweise liegt das Problem auch bei der Lib. Ich hab sie noch nicht verwendet, kann leider nichts dazu sagen.
Versuch vielleicht auch mal die Adressen der Variablen zu beobachten, ob die sich wie erwartet verändern.
Ein Minimabeispiel, bei dem der Fehler auftritt, ohne Verwendung von Dritt-Libs könntest du auch mal aufbauen. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 07.10.2012, 13:21 Titel: |
|
|
@Westbeam ... poste ruhig mal den kompletten valgrind block.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 07.10.2012, 18:15 Titel: |
|
|
Interessant ist, das Fehler auftreten, bevor dein screen aufruf statfand
Zitat: | ==5614== Invalid read of size 4
==5614== at 0x806581D: driver_init (in /home/alex/a/X-tfb/game)
==5614== by 0x805B0EB: set_mode (in /home/alex/a/X-tfb/game)
==5614== by 0x805B75F: fb_GfxScreenRes (in /home/alex/a/X-tfb/game)
==5614== by 0x804DEC8: OGL::CALLSCREEN(int, int, int, int, int) (/home/alex/a/X-tfb/inc/libs/2d.bi:17)
==5614== by 0x804E07C: SCREENRES (/home/alex/a/X-tfb/inc/libs/2d.bi:74)
==5614== by 0x805134F: main (/home/alex/a/X-tfb/inc/player.bi:21)
==5614== Address 0x8fc38ac is 12 bytes inside a block of size 400 free'd
==5614== at 0x402B06C: free (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==5614== by 0x411CF9A: XFree (in /usr/lib/i386-linux-gnu/libX11.so.6.3.0)
==5614== by 0x805B0EB: set_mode (in /home/alex/a/X-tfb/game)
==5614== by 0x805B75F: fb_GfxScreenRes (in /home/alex/a/X-tfb/game)
==5614== by 0x804DEC8: OGL::CALLSCREEN(int, int, int, int, int) (/home/alex/a/X-tfb/inc/libs/2d.bi:17)
==5614== by 0x804E07C: SCREENRES (/home/alex/a/X-tfb/inc/libs/2d.bi:74)
==5614== by 0x805134F: main (/home/alex/a/X-tfb/inc/player.bi:21)
|
Das deutet darauf hin, das die fbc version nicht mit der lib version kompatibel ist.
allerdings sind die fehler in obrigem code "typisch", wen es X11 spezifisch wird.
Hier wird auch zusätzlich noch dri inizialisiert. hast du dri drauf? funktioniert dri auch auf dem system? reportet x11 beim init im log ein dri init fehler?
die fehler oberhalb vom oben gepostetem log, stammen vermutlich aus dem init vom app, bzw. aus dem init von screen bzw dem treiber aus der gfxlib von fbc.
die fehlersuche sollte sich (da ichs leider nicht reproduzieren kann) auf die lib im zusammenbpiel mit der gfxlib von fbc und dem x11--dri system konzentrieren.
dort entstehen die fehler, welche auch auslöser für alle darauf folgenden fehler sein werden.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 07.10.2012, 18:52 Titel: |
|
|
Ich habe dri auf meinem System drauf, wird bei der Installation von Ubuntu automatisch mit installiert, soweit ich weiß.
PuppetMaster hat Folgendes geschrieben: | funktioniert dri auch auf dem system? reportet x11 beim init im log ein dri init fehler? |
Es hat zumindest vorher nie Probleme gemacht.
In welchem Log postet x11 die Fehler? |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 07.10.2012, 18:54 Titel: |
|
|
/var/log/Xorg...log
dort stehen aber nicht nur fehler drin. Fehler erkennt man am EE, WW, usw. aber das is oben beschrieben, im log.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 07.10.2012, 19:14 Titel: |
|
|
Das sind alle EE's und WW's die ich in Xorg.0.log gefunden habe:
Code: | [ 22.511] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[ 22.511] Entry deleted from font path.
[ 22.511] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
[ 22.511] Entry deleted from font path.
[ 22.511] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
[ 22.511] Entry deleted from font path.
[ 22.511] (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
[ 22.511] Entry deleted from font path.
[ 22.511] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[ 22.511] Entry deleted from font path.
[ 22.511] (WW) The directory "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" does not exist.
[ 22.511] Entry deleted from font path.
...
[ 22.556] (WW) Falling back to old probe method for fglrx
[ 22.567] (WW) fglrx: No matching Device section for instance (BusID PCI:0@4:0:1) found
[ 22.568] (WW) Falling back to old probe method for vesa
[ 22.568] (WW) Falling back to old probe method for fbdev
...
[ 12350.566] (EE) fglrx(0): PPLIB: swlPPLibNotifyEventToPPLib() failed!
[ 12350.566] (EE) fglrx(0): ulEventType = 00000023, ulEventData = 00000001
...
[ 28908.242] (EE) fglrx(0): PPLIB: swlPPLibNotifyEventToPPLib() failed!
[ 28908.242] (EE) fglrx(0): ulEventType = 00000023, ulEventData = 00000001
...
[ 28916.041] (EE) fglrx(0): PPLIB: swlPPLibNotifyEventToPPLib() failed!
[ 28916.041] (EE) fglrx(0): ulEventType = 00000023, ulEventData = 00000001 |
In dem Log steht auch einiges über die libdri drin:
Code: | [ 22.532] (II) LoadModule: "dri"
[ 22.532] (II) Loading /usr/lib/xorg/modules/extensions/libdri.so
[ 22.532] (II) Module dri: vendor="X.Org Foundation"
[ 22.532] compiled for 1.11.3, module version = 1.0.0
[ 22.532] ABI class: X.Org Server Extension, version 6.0
[ 22.532] (II) Loading extension XFree86-DRI
[ 22.532] (II) LoadModule: "dri2"
[ 22.533] (II) Loading /usr/lib/xorg/modules/extensions/libdri2.so
[ 22.533] (II) Module dri2: vendor="X.Org Foundation"
[ 22.533] compiled for 1.11.3, module version = 1.2.0
[ 22.533] ABI class: X.Org Server Extension, version 6.0
[ 22.533] (II) Loading extension DRI2 |
Scheint aber keine Probleme mit zu geben. |
|
Nach oben |
|
 |
|