Salut Paul, "Pentru executabilele Linux pe 32 de biți... Folosiți o mașină virtuală. Simple as that." --> Iti zic eu una mai simpla. Folositi __DOAR__ masinile virtuale de SO [1] , simple as that, si cand definiti o problema definiti-o clar (de unde sa stim noi ca tu rulezi pe abominatia aia de WSL din Windows 10 care nu e nici macar un Linux real). Am fi putut fi mai eficienti de la inceput daca foloseai asta.
"Cine folosește Linuxul din Windows 10" - Nici nu trebuie sa ne punem problema asta. Indicatia mea ca asistent SO pentru studenti este clara: nu folositi WSL din Windows 10 decat daca aveti nevoie de comenzi Linux in Windows, nu il folositi pentru a dezvolta cod C userspace cu POSIX __NICIODATA__ si in __NICI UN CONTEXT__. Nu va bazati nici macar pe POSIX-ul din MAC OS. [1] https://ocw.cs.pub.ro/courses/so/info/mv On Tue, 16 Apr 2019 at 18:22, Paul-Stelian Olaru via so <so@cursuri.cs.pub.ro> wrote: > > 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. > > > > 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. > > > > Sent from Mail for Windows 10 > > > > From: Paul-Stelian Olaru > Sent: Tuesday, April 16, 2019 6:02 PM > To: Adrian Șendroiu; Sisteme de Operare > Subject: RE: [so] Incorrect number of faults (test 7, inputs/inv_perm) > > > > rt_sigaction(SIGSEGV, SIG_DFL...) > rt_sigaction(SIGSEGV, 0xf7f758ed, ...) > openat(„./_test/inputs/inv_perm”) > read (header)... și close > openat iar (tura asta al meu) > --Primul SIGSEGV la 0x804801c > -> mincore (-1 ENOMEM – am continuat și am mapat – cu el verific dacă nu > cumva e deja ceva la adresa aia) > -> mprotect (READ, WRITE) – hack pentru secțiunile mai mici decât pagina – > pun eu zerouri > -> mprotect(READ, EXECUTE) – permisiunile originale din secțiune > rt_sigreturn (mă rog) > --SIGSEGV la 0x80480c0 > > -> Aparent lipsește al doilea apel la mincore, aproape de crash-ul dorit? > -> rt_sigaction(SIGSEGV, SIG_DFL) (metoda mea de a crasha programul cu exact > faultul respectiv) > -> Final SIGSEGV that actually crashes > > https://pastebin.com/CcbJ4WXZ (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?) > > > > Sent from Mail for Windows 10 > > > > From: Adrian Șendroiu > Sent: Tuesday, April 16, 2019 5:35 PM > To: Paul-Stelian Olaru; Sisteme de Operare > Subject: Re: [so] Incorrect number of faults (test 7, inputs/inv_perm) > > > > Ce zice strace ./_test/run_test ./_test/inputs/inv_perm? > > > > On Tue, 16 Apr 2019 at 17:07, Paul-Stelian Olaru via so > > <so@cursuri.cs.pub.ro> wrote: > > > > > > 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. > > > > > > > > > > > > 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? > > > > > > > > > > > > Sent from Mail for Windows 10 > > > > > > > > > > > > _______________________________________________ > > > http://ocw.cs.pub.ro/courses/so/info/lista-discutii > > > > > > _______________________________________________ > http://ocw.cs.pub.ro/courses/so/info/lista-discutii -- Cu stimă, Mihai Bărbulescu _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii