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
