szegmens hiba

 ( Tsab | 2005. március 2., szerda - 9:57 )

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Leggyakoribb okok:

- String nincs NULL-la lezárva.
- Tömb nem létező elemére való hivatkozás (pl: ciklustúlfutás)
- Nem lefoglalt terület fölszabadítása (malloc-free).
- Nem megnyitott állomány lezárása (open-close).
- Hibás pointeraritmetika.

Hirtelen ennyi jut eszembe.

[quote:2896092b6c="meditor"]- Nem megnyitott állomány lezárása (open-close).
[/quote:2896092b6c]

<nitpick>Nalam ez tok jol hibat produkal, kapok egy EBADF-et tobbnyire. Meglepodnek, ha ez segfaultolna</nitpick>

[quote:9f7bf46563="algernon"][quote:9f7bf46563="meditor"]- Nem megnyitott állomány lezárása (open-close).
[/quote:9f7bf46563]

<nitpick>Nalam ez tok jol hibat produkal, kapok egy EBADF-et tobbnyire. Meglepodnek, ha ez segfaultolna</nitpick>[/quote:9f7bf46563]

A malloc-free és a open-close párokat úgy általában
írtam. Mindengyiknek számos analógja van, a free-ből például
XFree() is van.

Az biztos, hogy az fclose(), ha előtte nincs fopen(), segfaultot
okoz (Linux, 2.4.26), lehet, hogy konkrétan a close nem.

Igazad van, precízebb is lehettem volna.

[quote:195af27fd2="meditor"][quote:195af27fd2="algernon"][quote:195af27fd2="meditor"]- Nem megnyitott állomány lezárása (open-close).
[/quote:195af27fd2]

<nitpick>Nalam ez tok jol hibat produkal, kapok egy EBADF-et tobbnyire. Meglepodnek, ha ez segfaultolna</nitpick>[/quote:195af27fd2]

Az biztos, hogy az fclose(), ha előtte nincs fopen(), segfaultot
okoz (Linux, 2.4.26), lehet, hogy konkrétan a close nem.
[/quote:195af27fd2]

Ez ugyanaz akkor, mint az elszurt pointermuveletek, leven fclose pointert var. O:)

(Bocsi, rossz napom van, kotoszkodom >;)

[quote:c0dfc812e9="algernon"][quote:c0dfc812e9="meditor"][quote:c0dfc812e9="algernon"][quote:c0dfc812e9="meditor"]- Nem megnyitott állomány lezárása (open-close).
[/quote:c0dfc812e9]

<nitpick>Nalam ez tok jol hibat produkal, kapok egy EBADF-et tobbnyire. Meglepodnek, ha ez segfaultolna</nitpick>[/quote:c0dfc812e9]

Az biztos, hogy az fclose(), ha előtte nincs fopen(), segfaultot
okoz (Linux, 2.4.26), lehet, hogy konkrétan a close nem.
[/quote:c0dfc812e9]

Ez ugyanaz akkor, mint az elszurt pointermuveletek, leven fclose pointert var. O:)

(Bocsi, rossz napom van, kotoszkodom >;)[/quote:c0dfc812e9]

Nézd, a SegFault attól van, hogy belenyúlsz egy olyan
területbe, amibe nem volna szabad. Az általam felsorolt
összes példa túlképp elkurbicolt pointer.

De ha hibát keresel, nem biztos, hogy egy pointerként
manifesztálódik a hibás kód. Egy könyvtári utasítás is
okozhatja, amelybe rejtve ott van a hibás pointer.
Én elsősorban a programkódot nézem és nem
ami mögötte van. Ez lehet, hogy konstrukciós hiba nálam.

ha ebbe bukok bele amikor lefuttatom a progim (amit gccvel fordítottam) akkor az mit jelent és hol kapahtok bővebb infot, logot kimenetet valamit?

Nézd meg ezt:
http://www.bitwizard.nl/sig11/

vagy valami gebasz van a pointerekkel, vagy tombnel nem letezo indexre hivatkozas, etc. Forditsd ugy, hogy minden debug infot bekapcsolsz, es hasznalj gdb-t. manapsag nagyon jo frontendek is vannak hozza.