New submission from Hirokazu Yamamoto <ocean-c...@m2.ccsnet.ne.jp>: Currently, PC/winreg.c releases GIL while calling registry API, but I found this in Remarks section of RegEnumValue.
http://msdn.microsoft.com/en-us/library/ms724865%28VS.85%29.aspx > While using RegEnumValue, an application should not call any registry > functions that might change the key being queried. Maybe we shouldn't release GIL in PC/winreg.c? Thank you. # I sometimes experienced crash of test_changing_value(test_winreg) # on release27-maint. It happens when 2 threads calls PyEnumValue and # PySetValue simultaneously. And I could stop it by following patch. # I'll attach the stack trace of crash. Index: PC/_winreg.c =================================================================== --- PC/_winreg.c (revision 85344) +++ PC/_winreg.c (working copy) @@ -1219,7 +1219,6 @@ } while (1) { - Py_BEGIN_ALLOW_THREADS rc = RegEnumValue(hKey, index, retValueBuf, @@ -1228,7 +1227,6 @@ &typ, (BYTE *)retDataBuf, &retDataSize); - Py_END_ALLOW_THREADS if (rc != ERROR_MORE_DATA) break; @@ -1577,9 +1575,7 @@ if (subKey == NULL) return NULL; } - Py_BEGIN_ALLOW_THREADS rc = RegSetValue(hKey, subKey, REG_SZ, str, len+1); - Py_END_ALLOW_THREADS if (rc != ERROR_SUCCESS) return PyErr_SetFromWindowsErrWithFunction(rc, "RegSetValue"); Py_INCREF(Py_None); ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue10071> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com