[so] [Tema2][win] Probleme creare si utilizare semafoare

Adrian Sendroiu molecula2788 at gmail.com
Tue Apr 9 12:29:24 EEST 2013


Vicentiu Ciorbaru <cvicentiu at gmail.com> writes:

> Salut,
>
> M-am lovit de urmatoarea problema:
>
> Creez semafoare in procesul mpirun si le initializez cu valoarea 0 sau 1.
> Nu pare a fi nici o eroare.
>
> Incerc sa deschid semafoarele in procesele copil via biblioteca mpi,
> de fiecare data primesc error: the system can not find the file specified.
> Procesul mpirun nu se termina, defapt chiar face wait pe semaforul pe care
> procesele copil nu-l pot deschide si ramane blocat acolo.
>
> Apelurile de functii sunt astfel:
>
> sem = CreateSemaphore(NULL, init, 0xFFFF, name);
> unde name este un nume cu stringul ce contine urmatoarele caractere:
> Global\semstart
>
> Iar in procesul copil via biblioteca mpi:
> sem = OpenSemaphore(SEMAPHORE_ALL_ACCESS, FALSE, sema_name);
>
> unde sema_name este acelasi string ca cel de la create semaphore
>
> Mentionez ca in mpirun se creeaza mai multe semafoare
> Global\semc0 .. Global\semc<np - 1>
> Global\semstart si Global\sembarrier
>
> Nu reusesc sa identific care ar putea fi problema.
>
> Deasemenea, laboratorul 5 compilat pe masina virtuala la mine nu
> ruleaza. Primesc:
> PS C:\Users\Student\Documents\tema2 SO\lab\lab05\sol\win\2-ipc> .\server.exe
> (win_shm.c, shmem_attach, 65): MapViewOfFile: The handle is invalid.
>
> iar cand rulez clientul:
> PS C:\Users\Student\Documents\tema2 SO\lab\lab05\sol\win\2-ipc> .\client.exe
> (win_queue.c, msgq_get, 52): CreateFile: The system cannot find the
> file specified.
>
> Orice ajutor e binevenit, eu nu am reusit sa-i dau de cap.
>
> Also, desi codul este messy, o iteratie a incercarilor de debug este
> pe vmchecker.
>
> Vicentiu

Salut

Este din cauza lui "Global\" din numele semaforului. Acest "Global\" ii
spune sa creeze semaforul intr-un namespace global, vizibil de toate
procesele din sistem. Ca sa poti crea un astfel de obiect trebuie sa ai
drepturi de administrator, ceea ce nu e cazul la tine, pentru ca rulezi
ca Student.

Solutia este sa pui "Local\" in loc de "Global\", sau de fapt cred ca
merge si fara niciun prefix (pui doar numele).

Adrian


More information about the so mailing list