/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
segmentation fault
Fra : Troels Thomsen


Dato : 04-03-03 07:57

Igors eksempel:

int
main()
{
char *args[] = { "foo", "bar", "baz" };

args[0][0] = 'z';
return 0;
}

> $ /local/snacks/bin/gcc -Wall -pedantic -ansi const.c
> $ ./a.out
> Segmentation fault


Ja!, det kan jeg minsanten også få min gcc under cygwin til, men hvor pokker
ligger det kode der holder øje med det?
I selve filen ? I et libary? Os? Kan gcc markere noget som readonly
område, og så holder 'nogen' øje med skrivninger hertil?




 
 
Rasmus Kaae (04-03-2003)
Kommentar
Fra : Rasmus Kaae


Dato : 04-03-03 09:05

Troels Thomsen wrote:
> Igors eksempel:
>
> int
> main()
> {
> char *args[] = { "foo", "bar", "baz" };
>
> args[0][0] = 'z';
> return 0;
> }
>
>
>>$ /local/snacks/bin/gcc -Wall -pedantic -ansi const.c
>>$ ./a.out
>>Segmentation fault
>
>
>
> Ja!, det kan jeg minsanten også få min gcc under cygwin til, men hvor pokker
> ligger det kode der holder øje med det?
> I selve filen ? I et libary? Os? Kan gcc markere noget som readonly
> område, og så holder 'nogen' øje med skrivninger hertil?

En segmentation fault er en fejlbesked fra dit operativsystem, ikke en
fejlbesked fra den kompilerede kode. Det 'skrivebeskyttede' data ligger
formentlig i kode-segmentet i hukommelsen mens de
'ikke-skrivebeskyttede' data ligger i et data-segment i hukommelsen.



Thomas Lykkeberg (04-03-2003)
Kommentar
Fra : Thomas Lykkeberg


Dato : 04-03-03 19:03

On Tue, 04 Mar 2003 09:05:26 +0100, Rasmus Kaae <kaae@daimi.au.dk>
wrote:

>En segmentation fault er en fejlbesked fra dit operativsystem, ikke en
>fejlbesked fra den kompilerede kode. Det 'skrivebeskyttede' data ligger
>formentlig i kode-segmentet i hukommelsen mens de
>'ikke-skrivebeskyttede' data ligger i et data-segment i hukommelsen.

Korrekt, men ikke helt. Det er ikke direkte operativsystemet som
"finder" segmentation fejlen, men derimod den MMU (Memory Management
Uint - Hardware enhed) som er implementeret i CPU'en, eller det
chipset som computeren er bygget op omkring.

/Thomas


Rasmus Kaae (05-03-2003)
Kommentar
Fra : Rasmus Kaae


Dato : 05-03-03 09:16

Thomas Lykkeberg wrote:
> On Tue, 04 Mar 2003 09:05:26 +0100, Rasmus Kaae <kaae@daimi.au.dk>
> wrote:
>
>
>>En segmentation fault er en fejlbesked fra dit operativsystem, ikke en
>>fejlbesked fra den kompilerede kode. Det 'skrivebeskyttede' data ligger
>>formentlig i kode-segmentet i hukommelsen mens de
>>'ikke-skrivebeskyttede' data ligger i et data-segment i hukommelsen.
>
>
> Korrekt, men ikke helt. Det er ikke direkte operativsystemet som
> "finder" segmentation fejlen, men derimod den MMU (Memory Management
> Uint - Hardware enhed) som er implementeret i CPU'en, eller det
> chipset som computeren er bygget op omkring.

og så er det OS'et der er istand til at håndtere den fejlbesked der
kommer fra cpu'en hvorefter OS'et terminerer udførslen totalt og skriver
en fejlbesked.


Soren Davidsen (06-03-2003)
Kommentar
Fra : Soren Davidsen


Dato : 06-03-03 10:58

Rasmus Kaae <kaae@daimi.au.dk> writes:

> Thomas Lykkeberg wrote:
> > On Tue, 04 Mar 2003 09:05:26 +0100, Rasmus Kaae <kaae@daimi.au.dk>
> > wrote:
> >
> >> En segmentation fault er en fejlbesked fra dit operativsystem, ikke
> >> en fejlbesked fra den kompilerede kode. Det 'skrivebeskyttede' data
> >> ligger formentlig i kode-segmentet i hukommelsen mens de
> >> 'ikke-skrivebeskyttede' data ligger i et data-segment i hukommelsen.
> > Korrekt, men ikke helt. Det er ikke direkte operativsystemet som
> > "finder" segmentation fejlen, men derimod den MMU (Memory Management
> > Uint - Hardware enhed) som er implementeret i CPU'en, eller det
> > chipset som computeren er bygget op omkring.
>
> og så er det OS'et der er istand til at håndtere den fejlbesked der
> kommer fra cpu'en hvorefter OS'et terminerer udførslen totalt og
> skriver en fejlbesked.

MMU er ikke en forudsaetning for at kunne finde segv's, tjek f.eks.:

http://www.uclinux.org/


Mvh,

--
___
Soren Davidsen / o\
Math student, ICSMA (_____)
__ http://www.tanesha.net/ _________________________________(___)_______

Mogens Hansen (06-03-2003)
Kommentar
Fra : Mogens Hansen


Dato : 06-03-03 19:37

"Soren Davidsen" <soren-usenet200303@tanesha.net> wrote

[8<8<8<]
>
> MMU er ikke en forudsaetning for at kunne finde segv's, tjek f.eks.:
>
> http://www.uclinux.org/

Kan du give et mere specifikt link til uClinux, hvor man kan se at man kan
få segv (eller noget der ligner) og eventuelt en beskrivelse af hvordan det
er lavet.

Jeg kunne kun finde information om hvordan man får Linux til at køre på en
hardware platform uden MMU - og det er noget andet.


Venlig hilsen

Mogens Hansen



Thomas Lykkeberg (06-03-2003)
Kommentar
Fra : Thomas Lykkeberg


Dato : 06-03-03 21:23

On 06 Mar 2003 10:57:42 +0100, Soren Davidsen
<soren-usenet200303@tanesha.net> wrote:

>MMU er ikke en forudsaetning for at kunne finde segv's, tjek f.eks.:
>
>http://www.uclinux.org/

Hmmm, hvordan i alverden vil du fange det uden HW. Ja, du kan vel lave
noget kode som kontrollerer ALLE srkivninger/læsninger til fra RAM
lageret, men det er vist ikke noget man gør

Interessant, men højst u-sandlynligt.

/Thomas

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste