<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}
--><!--
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 din nou,
<br>
<br>
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.<br>
<br>
Mult mai important e faptul ca problema persista in acelasi mod.<br>
<br>
Ma poate ajuta cineva? <br>
<br>
Multumesc mult<br>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<hr tabindex="-1">
<div style="direction: ltr;" id="divRpF817812"><font size="2" color="#000000" face="Tahoma"><b>From:</b> so-bounces@cursuri.cs.pub.ro [so-bounces@cursuri.cs.pub.ro] on behalf of Daniel CIOCĪRLAN [daniel.ciocirlan1607@cti.pub.ro]<br>
<b>Sent:</b> Sunday, April 21, 2013 7:51 PM<br>
<b>To:</b> so@cursuri.cs.pub.ro<br>
<b>Subject:</b> [so] [Tema3][lin]Eroare ciudata tratare ssegv<br>
</font><br>
</div>
<div></div>
<div>
<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>
</div>
</div>
</div>
</body>
</html>