On 06/11/2017 11:33 AM, Christian Ullrich wrote: > 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()). > >
It's certainly worth doing. I turned off testing ecpg ages ago on bowerbird because I was getting errors. That's an older version of the toolset. We already define _WIN32_WINNT to be 0x0600 on all appropriate platforms (Vista/2008 and above), so I think you could probably just check for that value. I have no opinion on the pthread question. cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers