Corrupted system.reg in clustered environment - where to look?

Alexander.Farber at nokia.com Alexander.Farber at nokia.com
Fri Mar 30 10:01:38 CDT 2007


Hi Alexandre,

> From: ext Alexandre Julliard [mailto:julliard at winehq.org] 
>
> For the standard registry files you'd have to do it in
> load_init_registry_from_file() and save_branch(). It still won't
> prevent one server from overwriting changes made by others of course.

thanks, you are correct: the load_registry() and 
save_registry() aren't called in my case at all - I was 
modifying wrong functions. Here I've added few fprintf's:

salsim04:afarber {528} wine perl -v
load_init_registry_from_file(/disks/ouusers/afarber/.wine/system.reg,
key)
load_init_registry_from_file(/disks/ouusers/afarber/.wine/userdef.reg,
key)
load_init_registry_from_file(/disks/ouusers/afarber/.wine/user.reg, key)
save_branch(key, /disks/ouusers/afarber/.wine/system.reg)
save_branch, renaming /disks/ouusers/afarber/.wine/reg205b0000.tmp ->
/disks/ouusers/afarber/.wine/system.reg
save_branch(key, /disks/ouusers/afarber/.wine/userdef.reg)
save_branch, renaming /disks/ouusers/afarber/.wine/reg205b0000.tmp ->
/disks/ouusers/afarber/.wine/userdef.reg
save_branch(key, /disks/ouusers/afarber/.wine/user.reg)
save_branch, renaming /disks/ouusers/afarber/.wine/reg205b0000.tmp ->
/disks/ouusers/afarber/.wine/user.reg

This is perl, v5.6.1 built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2001, Larry Wall

Binary build 635 provided by ActiveState Corp.
http://www.ActiveState.com
Built 15:34:21 Feb  4 2003

Perl may be copied only under the terms of either the Artistic License
or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'.  If you have access to
the
Internet, point your browser at http://www.perl.com/, the Perl Home
Page.

salsim04:afarber {529} save_branch(key,
/disks/ouusers/afarber/.wine/system.reg)
save_branch, renaming /disks/ouusers/afarber/.wine/reg205b0000.tmp ->
/disks/ouusers/afarber/.wine/system.reg
save_branch(key, /disks/ouusers/afarber/.wine/userdef.reg)
save_branch(key, /disks/ouusers/afarber/.wine/user.reg)
save_branch, renaming /disks/ouusers/afarber/.wine/reg205b0000.tmp ->
/disks/ouusers/afarber/.wine/user.reg


However now I'm really lost, because I don't understand
where does the file corruption occur. In my case the
~/.wine/system.reg is a regular file stored in my NFS-
mounted home dir. That is why a tmp file is used and
later renamed. Shouldn't that operation be atomic and
if not, how could I protect it (locking a dummy file?)

Regards
Alex

PS: BTW I've noticed a bug - the variable "count" in
    the save_branch() is probably meant to be static.
    But it is not and that's why the tmp file's name 
    (the "reg205b0000.tmp" above) never changes.



More information about the wine-devel mailing list