[HACKERS] Buildfarm failures on woodlouse (in ecpg-check)
От | Christian Ullrich |
---|---|
Тема | [HACKERS] Buildfarm failures on woodlouse (in ecpg-check) |
Дата | |
Msg-id | ohjnr7$8n0$1@blaine.gmane.org обсуждение исходный текст |
Ответы |
Re: [HACKERS] Buildfarm failures on woodlouse (in ecpg-check)
|
Список | pgsql-hackers |
Hello, my buildfarm animal woodlouse (Visual Studio 2013 on Windows 7) stopped working correctly some months ago. After Tom kindly prodded me into fixing it, I noticed that I had configured it to skip the ecpg-check step because one of the tests in the "thread" section (not always the same) nearly always failed. I had set it up in circa 2015, so I reenabled the step to see whether anything had changed since, and it started failing again. Through some trial and error, and with the help of Microsoft's Application Verifier tool, I found what I think is the cause: It looks like the VS 2013 CRT's setlocale() function is not entirely thread-safe; the heap debugging options make it crash when manipulating per-thread locale state, and according to the comments surrounding that spot in the CRT source, the developers were aware the code is fragile. I crudely hacked a critical section around the setlocale() call in pgwin32_setlocale(). After this change, the test does not crash, while without it, it crashes every time. If there is interest in fixing this issue that is apparently limited to VS 2013, I will try and produce a proper patch. I notice, however, that there is a pthread compatibility layer available that I have no experience with at all, and I assume using it is preferred over straight Win32? My hack is attached; please feel free to tell me I'm on the wrong track. To build correctly, it requires defining _WIN32_WINNT to be 0x600 or above (and using an SDK that knows about InitOnceExecuteOnce()). -- Christian
В списке pgsql-hackers по дате отправления: