At 2017-10-26 05:58:07, "Michael Roth" <mdr...@linux.vnet.ibm.com> wrote: >Quoting Tomáš Golembiovský (2017-09-29 16:31:02) >> On Fri, 29 Sep 2017 17:11:22 +0800 >> Chen Hanxiao <chen_han_x...@126.com> wrote: >> >> > From: Chen Hanxiao <chenhanx...@gmail.com> >> > >> > On some of windows (win08 sp2), >> > it doesn't work by calling LookupAccountSidW with >> > well-known SIDs, >> > We got an error: >> > error 997 overlapped I/O operation is in progress >> > >> > But hardcoded names work. >> > >> > This patch introduces a workaroud for this issue: >> > if LookupAccountSidW failed, try hardcoded one. >> > >> > Signed-off-by: Chen Hanxiao <chenhanx...@gmail.com> >> > --- >> > qga/vss-win32/install.cpp | 10 ++++++++-- >> > 1 file changed, 8 insertions(+), 2 deletions(-) >> > >> >> I wonder if it's caused by qga itself or a race/conflict with some other >> app. But still... >> >> >> Reviewed-by: Tomáš Golembiovský <tgole...@redhat.com> > >I think it might be getNameByStringSID()/LookupAccountSidW() reporting a >stale GetLastError() value. > >Does this fix the issue?
Not exactly. I tested your patch several times, it improved greatly. But failed only one time, got another error 1722. Build with my fallback patch and your suggestion, installation work perfectly. Regards, - Chen > >diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp >index ba7c94eb25..94c921e8de 100644 >--- a/qga/vss-win32/install.cpp >+++ b/qga/vss-win32/install.cpp >@@ -149,9 +149,10 @@ static HRESULT getNameByStringSID( > wchar_t domainName[BUFFER_SIZE]; > > chk(ConvertStringSidToSidW(sid, &psid)); >- LookupAccountSidW(NULL, psid, buffer, bufferLen, >- domainName, &domainNameLen, &groupType); >- hr = HRESULT_FROM_WIN32(GetLastError()); >+ if (!LookupAccountSidW(NULL, psid, buffer, bufferLen, >+ domainName, &domainNameLen, &groupType)) { >+ hr = HRESULT_FROM_WIN32(GetLastError()); >+ } > > LocalFree(psid); > >> >> >> -- >> Tomáš Golembiovský <tgole...@redhat.com> >> >