[so] [Tema3][Windows] - Permisiuni VirtualAlloc, VirtualProtect
Mihai Barbulescu
b12mihai at gmail.com
Tue Apr 16 18:40:53 EEST 2019
Salut Ionut,
Nu-i lucru stupid si nu e timpul pierdut pentru noi. Ceea ce Razvan
Crainea a spus si ceea ce insistam aici sunt doua aspecte foarte
importante:
1. Cand formulati o problema formulati-o clar, concis si dati cat mai
multe informatii relevante despre ea (chiar daca unele detalii vi se
par neimportante ziceti-le)
2. Echipa de SO se uita pe codul vostru atunci cand sunt lucruri
complet netriviale. Cum zicea Razvan ne uitam doar in situatii
exceptionale, de cele mai multe ori ne prindem din "vorbe"/descrierea
problemei si vrem asa sa se intample.
On Tue, 16 Apr 2019 at 17:54, Ionuț Mihalache <ipopescu46 at gmail.com> wrote:
>
> Gata, am rezolvat. Sunt prea obosit. La SetFilePointer puneam FILE_CURRENT in loc de FILE_BEGIN. Multumesc de ajutor si scuze ca v-am pierdut timpul pe un lucru stupid.
>
> În mar., 16 apr. 2019 la 17:42, Mihai Barbulescu <b12mihai at gmail.com> a scris:
>>
>> Salut Ionut,
>>
>> Da un ochi pe optiunile lui [1] s-ar putea ca -dump_at_unaddressable
>> si poate -pause_at_unaddressable si poate reusesti sa afli si unde in
>> cod s-a oprit programul tau si poate asa afli accesul invalid. Show
>> reachable e util doar pentru leak-uri, poti sa lasi pornita si
>> optiunea asta.
>>
>> Mai ai optiunile -light si -brief poate gasesti ceva mai repede cu astea.
>>
>> [1] https://drmemory.org/docs/page_options.html
>>
>> On Tue, 16 Apr 2019 at 17:34, Ionuț Mihalache <ipopescu46 at gmail.com> wrote:
>> >
>> > Salut modul cum folosesc Dr Memory este acesta: "drmemory.exe -show_reachable .\so_exec.exe so_test_prog.exe". Eroarea pe care o primesc este urmatoarea:
>> >
>> > Dr. Memory version 1.11.0 build 2 built on Aug 29 2016 02:42:07
>> > Dr. Memory results for pid 3856: "so_exec.exe"
>> > Application cmdline: ".\so_exec.exe so_test_prog.exe"
>> > Recorded 115 suppression(s) from default C:\Program Files\Dr. Memory\bin\suppress-default.txt
>> >
>> > WARNING: application is missing line number information.
>> >
>> > Error #1: UNADDRESSABLE ACCESS: reading 0x1000003c-0x10000040 4 byte(s)
>> > # 0 so_loader.dll!so_execute +0x679 (0x54511c29 <so_loader.dll+0x1c29>)
>> > # 1 so_loader.dll!so_execute +0x17d (0x5451172e <so_loader.dll+0x172e>)
>> > # 2 so_exec.exe!? +0x0 (0x20001050 <so_exec.exe+0x1050>)
>> > # 3 so_exec.exe!? +0x0 (0x2000153a <so_exec.exe+0x153a>)
>> > # 4 KERNEL32.dll!BaseThreadInitThunk +0x11 (0x75801174 <KERNEL32.dll+0x51174>)
>> > Note: @0:00:00.265 in thread 2028
>> > Note: instruction: mov 0x3c(%ecx) -> %edx
>> >
>> > Error #2: UNADDRESSABLE ACCESS: reading 0x10030000-0x10030004 4 byte(s)
>> > # 0 so_loader.dll!so_execute +0x6e2 (0x54511c92 <so_loader.dll+0x1c92>)
>> > # 1 so_loader.dll!so_execute +0x692 (0x54511c43 <so_loader.dll+0x1c43>)
>> > # 2 so_loader.dll!so_execute +0x17d (0x5451172e <so_loader.dll+0x172e>)
>> > # 3 so_exec.exe!? +0x0 (0x20001050 <so_exec.exe+0x1050>)
>> > # 4 so_exec.exe!? +0x0 (0x2000153a <so_exec.exe+0x153a>)
>> > # 5 KERNEL32.dll!BaseThreadInitThunk +0x11 (0x75801174 <KERNEL32.dll+0x51174>)
>> > Note: @0:00:00.343 in thread 2028
>> > Note: instruction: cmp (%ecx) $0x00000000
>> >
>> > Error #3: UNADDRESSABLE ACCESS: executing 0x10010005-0x10010006 1 byte(s)
>> > # 0 <not in a module> (0x10010005)
>> > # 1 so_loader.dll!so_execute +0x69d (0x54511c4e <so_loader.dll+0x1c4e>)
>> > # 2 so_loader.dll!so_execute +0x17d (0x5451172e <so_loader.dll+0x172e>)
>> > # 3 so_exec.exe!? +0x0 (0x20001050 <so_exec.exe+0x1050>)
>> > # 4 so_exec.exe!? +0x0 (0x2000153a <so_exec.exe+0x153a>)
>> > # 5 KERNEL32.dll!BaseThreadInitThunk +0x11 (0x75801174 <KERNEL32.dll+0x51174>)
>> > Note: @0:00:00.374 in thread 2028
>> >
>> > Mai sunt erori dar sunt leak-uri cel mai probabil cauzate de faptul ca programul primeste segmentaion fault, cele de mai sus sunt cele care sunt cel mai de interes. Clar fac un acces invalid la memorie insa nu imi este inca clar unde se intampla, dar mai investighez.
>> >
>> > În mar., 16 apr. 2019 la 10:30, Mihai Barbulescu <b12mihai at gmail.com> a scris:
>> >>
>> >> Paul,
>> >>
>> >> Dacă ai fi citit cu atenție măcar subiectul problema lui Ionuț este pe Windows. Nu are cum să folosească utilitarele de Linux acolo (valgrind sau gdb)
>> >>
>> >> Ionuț spune-mi dacă nu te descurci să folosești Dr Memory pe testul cu probleme arata-ne cum folosești în cazul în care acesta nu te ajuta sa afli informații utile
>> >>
>> >> Cu stimă,
>> >> Mihai Bărbulescu
>> >>
>> >>
>> >> -------- Original Message --------
>> >> Subject: Re: [so] [Tema3][Windows] - Permisiuni VirtualAlloc, VirtualProtect
>> >> From: Paul Olaru via so
>> >> To: Ionuț Mihalache
>> >> CC: Sisteme de Operare
>> >>
>> >>
>> >> Adresa 1 sună suspect (NULL pointer dereference). Memory allocation failure? Încearcă să reduci utilizarea de memorie dinamică pe cât posibil. Vezi cu Valgrind/GDB care pointer încerci să îl folosești deși e nul.
>> >>
>> >> On Tue, Apr 16, 2019, 9:37 AM Ionuț Mihalache <ipopescu46 at gmail.com> wrote:
>> >>>
>> >>> Problema care apare este faptul că loader-ul primește segfault. Am printat adresa la care are loc page fault și de la un moment dat apare adresa 1 și nu ar trebui. VirtualAlloc și VirtualProtect nu eșuează însă nu pot să-mi dau seama exact de unde ar mai putea fi problema. Din printare am văzut că anumite pagini se mapează însă nu-mi dau seama care ar putea fi cauza pentru care primesc segfault pentru că nu fac altceva decât să aplic logica de pe linux cu alt page size și mod de a mapa. Este posibil să iau adresa greșit dar la început merge. Am presupus că este de la mapare pentru că tot primesc page fault. Rulez programul de test, cel cu hello world. Am postat doar ca să mă asigur că abordarea mea de a mapa este bună ca să nu depanez ce nu trebuie.
>> >>>
>> >>> mar., 16 apr. 2019, 09:14 Razvan Crainea <razvan.crainea at gmail.com> a scris:
>> >>>>
>> >>>> Salutare!
>> >>>>
>> >>>> Am rugămintea ca atunci când raportați o problemă, să descrieți exact
>> >>>> comportamentul programului, și ce debugging ați făcut. Dacă vreți să
>> >>>> vă putem ajuta, trebuie să avem toate datele problemei.
>> >>>> Nu ne mai cereți să ne uităm pe sursele voastre, asta ar trebui să
>> >>>> facem doar în cazuri excepționale, când debugging-ul făcut de voi nu
>> >>>> este de ajuns să identificăm problema. Dacă va fi nevoie de asta, vom
>> >>>> cere noi acces la surse.
>> >>>> Prin urmare, Ionuț, spune-ne de ce crezi că este de la mapare? În ce
>> >>>> moment al execuției? Ce fel de acces nu merge?
>> >>>>
>> >>>> Numai bine!
>> >>>> Răzvan
>> >>>>
>> >>>> On Tue, Apr 16, 2019 at 12:04 AM Paul-Stelian Olaru via so
>> >>>> <so at cursuri.cs.pub.ro> wrote:
>> >>>> >
>> >>>> > Pentru handlerul default pe Windows trebuie să returnezi ceva cu CONTINUE_SEARCHING din handlerul apelat de sistem. Honestly chestia asta e mai ușoară pe Windows decât pe Linux.
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> > Sent from Mail for Windows 10
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> > From: Ionuț Mihalache via so
>> >>>> > Sent: Tuesday, April 16, 2019 12:01 AM
>> >>>> > To: Sisteme de Operare
>> >>>> > Subject: [so] [Tema3][Windows] - Permisiuni VirtualAlloc, VirtualProtect
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> > Salut,
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> > Se poate uita cineva din echipa va rog daca permisiunile din parametri pentru VirtualAlloc si VirtualProtect sunt in regula? Si nu stiu exact cum sa fac cu handler-ul default insa nu asta este problema acum ci faptul ca primesc segmentation fault in loader si cred ca este de la mapare.
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> > Multumesc.
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> > https://gitlab.cs.pub.ro/ionut.mihalache1506/l3-so-assignments/blob/master/3-loader/skel-win/loader.c
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> > _______________________________________________
>> >>>> > http://ocw.cs.pub.ro/courses/so/info/lista-discutii
>> >>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>> Răzvan Crainea
>>
>>
>>
>> --
>> Cu stimă,
>> Mihai Bărbulescu
--
Cu stimă,
Mihai Bărbulescu
More information about the so
mailing list