<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle" type="text/css"><!--P {margin-top:0;margin-bottom:0;}--></style>
</head>
<body ocsi="0" fpstyle="1">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Salut,<br>
<br>
Am nevoie de putin ajutor la o situatie pe care nu o inteleg.<br>
<br>
Testul 21 (si probabil nu numai el, ca mai multe imi pica) imi da urmatoarea situatie:<br>
<br>
for i<br>
        pos = get_random_byte_mapping_position(1);<br>
        printf("faulting at %p\n", map.start + i * p_sz + pos); // linia asta am pus-o eu<br>
        tmp = ((char *) map.start)[i * p_sz + pos];    // linia asta genereaza segfault de citire<br>
<br>
iar la handler-ul de tratare a semnalului sigsegv, primele doua linii la mine, dupa declaratiile de variabile, sunt:<br>
<br>
    addr = (char*)siginfo->si_addr;<br>
    printf("faulted by %p\n", addr);<br>
<br>
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:<br>
<br>
faulting at 0xb77d3000<br>
faulted by 0xb77d3000<br>
-- pana aici primul semnal a fost tratat<br>
-- acum ar trebui sa urmeze fault-uri pentru toate celelalte pagini<br>
faulting at 0xb77d4000<br>
faulting at 0xb77d5000<br>
faulting at 0xb77d6000<br>
faulting at 0xb77d7000<br>
faulting at 0xb77d8000<br>
faulting at 0xb77d9000<br>
faulting at 0xb77da000<br>
faulting at 0xb77db000<br>
faulting at 0xb77dc000<br>
--- faultat aici<br>
faulted by 0xb77deab4<br>
--- dupa care<br>
Segmentation fault<br>
<br>
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).<br>
<br>
Are cineva vreo idee?<br>
</div>
</body>
</html>