[so] [Tema3][lin]Eroare ciudata tratare ssegv

Adrian Sendroiu molecula2788 at gmail.com
Mon Apr 22 11:07:03 EEST 2013


Daniel CIOCÎRLAN <daniel.ciocirlan1607 at cti.pub.ro> writes:

> 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?

Salut,

Nu inteleg foarte exact ce se intampla. Nu iti intra in handlerul de
sigsegv pentru toate acele "faulting at"?

Adrian 


More information about the so mailing list