Salut din nou,

Am reusit sa imi raspund la prima intrebare (la treaba cu de ce sunt adresele 
multiplu de pagesize); nu am inclus in testul meu individual si <stdlib>, iar 
"pos" era mereu 0.

Mult mai important e faptul ca problema persista in acelasi mod.

Ma poate ajuta cineva?

Multumesc mult
________________________________
From: [email protected] [[email protected]] on behalf of 
Daniel CIOCÎRLAN [[email protected]]
Sent: Sunday, April 21, 2013 7:51 PM
To: [email protected]
Subject: [so] [Tema3][lin]Eroare ciudata tratare ssegv

Salut,

Am nevoie de putin ajutor la o situatie pe care nu o inteleg.

Testul 21 (si probabil nu numai el, ca mai multe imi pica) imi da urmatoarea 
situatie:

for i
        pos = get_random_byte_mapping_position(1);
        printf("faulting at %p\n", map.start + i * p_sz + pos); // linia asta 
am pus-o eu
        tmp = ((char *) map.start)[i * p_sz + pos];    // linia asta genereaza 
segfault de citire

iar la handler-ul de tratare a semnalului sigsegv, primele doua linii la mine, 
dupa declaratiile de variabile, sunt:

    addr = (char*)siginfo->si_addr;
    printf("faulted by %p\n", addr);

Pentru ca testul 21 are 10 pagini din care se incearca citire, voi avea 10 
semnale. Problema e ca nu inteleg de ce am urmatorul output:

faulting at 0xb77d3000
faulted by 0xb77d3000
-- pana aici primul semnal a fost tratat
-- acum ar trebui sa urmeze fault-uri pentru toate celelalte pagini
faulting at 0xb77d4000
faulting at 0xb77d5000
faulting at 0xb77d6000
faulting at 0xb77d7000
faulting at 0xb77d8000
faulting at 0xb77d9000
faulting at 0xb77da000
faulting at 0xb77db000
faulting at 0xb77dc000
--- faultat aici
faulted by 0xb77deab4
--- dupa care
Segmentation fault

Nu inteleg de ce, daca "pos" a fost luat aleator, adresele de fault au numere 
intregi (multipli de pagesize) si de ce, daca outputul fault-ului al doilea 
zice ca va urma xxxx4000, in handler am xxxxeab4 (care evident e in afara 
intregii zone alocate, pana la c000).

Are cineva vreo idee?
_______________________________________________
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Raspunde prin e-mail lui