Knut Hunstad
asked on
ERROR_SHARING_VIOLATION when multithreading
Hi!
Not quite sure which topic to use here, if it's a Windows7-problem or a general network problem.
I make a program that can run heavy calculations on several pcs connected (a little like SETI@home). It uses files as interface between processes. The program can run on different threads on the same machine. Almost.
It has been working fine for a long time on WinXP. But one beta-customer has problems with the new version (which introduces the hyperthreading) on Windows 7. On his machine, if I call:
MoveFile(fileA, fileB);
for a file on the network at the same time from 2 different threads, none of them get access! Both get ERROR_SHARING_VIOLATION. On the network here at work that _never_ happens.
If I do the same with local files, everything is OK.
What can the difference be? Some access rights on this directory related to sharing?
Shouldn't one of them be the first anyway and get full access, while the next one can only read? As it is now, the file doesn't even get _copied_!
Are there any other more threadsafe ways to achieve this? I wouldn't like to rewrite the whole structure of the program.
Not quite sure which topic to use here, if it's a Windows7-problem or a general network problem.
I make a program that can run heavy calculations on several pcs connected (a little like SETI@home). It uses files as interface between processes. The program can run on different threads on the same machine. Almost.
It has been working fine for a long time on WinXP. But one beta-customer has problems with the new version (which introduces the hyperthreading) on Windows 7. On his machine, if I call:
MoveFile(fileA, fileB);
for a file on the network at the same time from 2 different threads, none of them get access! Both get ERROR_SHARING_VIOLATION. On the network here at work that _never_ happens.
If I do the same with local files, everything is OK.
What can the difference be? Some access rights on this directory related to sharing?
Shouldn't one of them be the first anyway and get full access, while the next one can only read? As it is now, the file doesn't even get _copied_!
Are there any other more threadsafe ways to achieve this? I wouldn't like to rewrite the whole structure of the program.
You should enable the appropriate auditing level on the destination system. Once you get the error, check the Windows Security Log on the destination and you should get a better idea why it fails.
ASKER
The file system is a DFS system with the files residing on non-Windows-servers, as I understood it. So there is no Windows security log to check on the destination.
The user was able to use a Windows server instead, so they have a workaround now. I still would like to find some solution to the original problem. The IT-people at the customer thought it might have something to with "opportunistic locking", but I haven't been able to find any conclusion as to why that would trigger this problem.
The user was able to use a Windows server instead, so they have a workaround now. I still would like to find some solution to the original problem. The IT-people at the customer thought it might have something to with "opportunistic locking", but I haven't been able to find any conclusion as to why that would trigger this problem.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks for trying! But since this user has a workaround and no other users have reported the same problem, I will simply let it rest. I can't really expect this user's it-department to be interested in helping me further when they have a solution for themselves...
I am confident that your suggestions are valid, however, and very happy that someone bothered to try to help me along! So I award you full points for your last answer.
I am confident that your suggestions are valid, however, and very happy that someone bothered to try to help me along! So I award you full points for your last answer.
Thank you for closing the question. Hope my suggestion will help in the future with the same or similar problem. Have a nice day!