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

Raspunde prin e-mail lui