<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=RO>Revin. Problema nici măcar nu era din codul meu. Când rulez sub o mașină virtuală pe bune de Linux, am 90/95 (nu am checkpatch). Pe ce rulez eu de obicei, Linuxul din Windows 10, eu folosesc qemu-i386-static pentru a rula executabilele Linux pe 32 de biți. Acest qemu-i386-static emulează toate apelurile de sistem, dar se pare că mincore nu este implementat (returnează -ENOSYS). Eu am folosit mincore pentru a verifica dacă o pagină a fost deja mapată sau nu; dacă mincore returnează succes sau o eroare diferită de ENOMEM înseamnă că ori pagina e mapată (a returna succes), ori s-a întâmplat o eroare (errno != ENOMEM). Eu am declanșat astfel crash direct când mincore mi-a returnat ENOSYS.<o:p></o:p></span></p><p class=MsoNormal><span lang=RO><o:p> </o:p></span></p><p class=MsoNormal><span lang=RO>Cine folosește Linuxul din Windows 10 să fie atent la chestia asta. Pentru executabilele Linux pe 32 de biți... Folosiți o mașină virtuală. Simple as that.<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:olarupaulstelian97@gmail.com">Paul-Stelian Olaru</a><br><b>Sent: </b>Tuesday, April 16, 2019 6:02 PM<br><b>To: </b><a href="mailto:molecula2788@gmail.com">Adrian Șendroiu</a>; <a href="mailto:so@cursuri.cs.pub.ro">Sisteme de Operare</a><br><b>Subject: </b>RE: [so] Incorrect number of faults (test 7, inputs/inv_perm)</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=RO>rt_sigaction(SIGSEGV, SIG_DFL...)<br>rt_sigaction(SIGSEGV, 0xf7f758ed, ...)<br>openat(„./_test/inputs/inv_perm”)<br>read (header)... și close<br>openat iar (tura asta al meu)<br>--Primul SIGSEGV la 0x804801c<br>-> mincore (-1 ENOMEM – am continuat și am mapat – cu el verific dacă nu cumva e deja ceva la adresa aia)<br>-> mprotect (READ, WRITE) – hack pentru secțiunile mai mici decât pagina – pun eu zerouri<br>-> mprotect(READ, EXECUTE) – permisiunile originale din secțiune<br>rt_sigreturn (mă rog)<br>--SIGSEGV la 0x80480c0<o:p></o:p></span></p><p class=MsoNormal><span lang=RO>-> Aparent lipsește al doilea apel la mincore, aproape de crash-ul dorit?<br>-> rt_sigaction(SIGSEGV, SIG_DFL) (metoda mea de a crasha programul cu exact faultul respectiv)<br>-> Final SIGSEGV that actually crashes<br><br></span><a href="https://pastebin.com/CcbJ4WXZ">https://pastebin.com/CcbJ4WXZ</a> (strace, complet). Există vreun mod de a cauza direct fault din prima (gen nu mai mapez dacă încerc să scriu pe o zonă care nu am voie, deși face parte din unul din segmente?)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:molecula2788@gmail.com">Adrian Șendroiu</a><br><b>Sent: </b>Tuesday, April 16, 2019 5:35 PM<br><b>To: </b><a href="mailto:olarupaulstelian97@gmail.com">Paul-Stelian Olaru</a>; <a href="mailto:so@cursuri.cs.pub.ro">Sisteme de Operare</a><br><b>Subject: </b>Re: [so] Incorrect number of faults (test 7, inputs/inv_perm)<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Ce zice strace ./_test/run_test ./_test/inputs/inv_perm?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On Tue, 16 Apr 2019 at 17:07, Paul-Stelian Olaru via so<o:p></o:p></p><p class=MsoNormal><so@cursuri.cs.pub.ro> wrote:<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Pentru a rezolva faulturi verific dacă a fost deja mapată pagina de memorie. Dacă nu, o mapez. Dacă da, consider eșec la mapare și declanșez handlerul salvat la so_init_loader. Perfect, asta îmi dă aproape toate testele chiar, dar pe testul 7 (inputs/inv_perm) mi se spune că am 2 faulturi în loc de unul singur.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Este abordarea corectă? De asemenea, există ceva (chiar în acel ucontext pe care noi îl primim ca void*) care ne va oferi tipul de acces care a generat faultul?<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Sent from Mail for Windows 10<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> _______________________________________________<o:p></o:p></p><p class=MsoNormal>> http://ocw.cs.pub.ro/courses/so/info/lista-discutii<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>