[so2] [Tema4] Race condition la scrierea în fişiere...

Victor Buciuc victor.buciuc at gmail.com
Mon May 13 17:21:24 EEST 2013


Salut,

Poate nu e un race ci doar o problema cu un buffer in care, dintr-un motiv
sau altul, nu se nu se copiaza null-urile si ramane memorie neintializata.

Victor.

Victor Buciuc


2013/5/13 Florin-Alexandru Stancu <niflostancu at gmail.com>

> Salut,
>
> Tot eu.
> Probabil iar va urma un monolog tipic (şi spam :D ), dar poate are cineva
> idee...
>
> Ei bine, după cum am scris şi în subiect, am un race condition pe undeva
> prin cod.
> Câte-odată îmi ia toate testele, alteori îmi diferă fişierele cu vreo
> 30-40 bytes (nu la size ci la conţinut, comparat manual :D ).
>
> Exemplu:
> *test 633: check lots_of_files/file21 data.........................failed
>   -- diff /tmp/pitix.mnt/lots_of_files/file21 /tmp/
> pitix.rw//lots_of_files/file21*
>
> Chestia asta se întâmplă random, pe fişiere random.
> Şi am mai observat un pattern: MEREU (din 5 rulări buguite), diferă doar
> 36 de caractere pe la mijlocul fişierului; în fişierul din pitix.rw am 36
> NULL-uri consecutive iar în pitix.mnt am, în locul lor, 36 de caractere
> binare random.
> Repet: mereu 36 NULL-uri consecutive, mereu sunt copiate greşit.
> Dimensiunile fişierelor sunt identice.
> Şi am mai încercat să îl pun cu dd (şi cu cp), manual, şi se copiază
> perfect fişierul cu cele 36 de NULL-uri.
> WTF? :D
>
> Am protejat structurile data_blocks a inode-ului cu spin_lock-uri. Tot aşa
> face.
> Am pus printk-uri de ENTER functie() şi EXIT funcţie() la *truncate()* şi
> la *get_block()*.
> Nu se apelează niciodată intercalate. Dar, dacă nu e de aici, atunci nu am
> nicio idee ce se întâmplă...
>
>
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so2/attachments/20130513/61665832/attachment.html>


More information about the so2 mailing list