Success! I put it my 2008 R2 machine and both the snappy tests and the entire test suite passed, so it looks good. As recommended, I won't use this in production until it's officially blessed - deflate seems to be doing a reasonable job in the meantime. Many thanks for finding and fixing the problem.
Nick On 23 May 2012 00:01, Dave Cottlehuber <[email protected]> wrote: > On 22 May 2012 12:26, Dave Cottlehuber <[email protected]> wrote: > > > On 17 May 2012 12:07, Nick North <[email protected]> wrote: > > > >> I'm getting this behaviour on 2008R2 and plain old 2008, and all my > >> instances are running the R15B build as a service. > >> > >> Nick > >> > >> On 17 May 2012 11:00, Dave Cottlehuber <[email protected]> wrote: > >> > >> > Weird. What release of w2008 server is it? i'll spin one up & see if I > >> can > >> > get the same result. Is this the R15B or the R14B04 build? Presumably > >> > running as a service, right? > >> > > >> > On 17 May 2012 10:08, Nick North <[email protected]> wrote: > >> > > >> > > Looking at erl.exe with procexp shows that both Win7 and Server 2008 > >> are > >> > > using 10.0.40219.325. Installing your vcredist version asked if I > >> wanted > >> > to > >> > > repair the existing installation, so I let it go ahead. > Unfortunately > >> it > >> > > made no difference: after installation the version in use was still > >> > > 10.0.40219.325 and the tests failed in the same way. > >> > > > >> > > Nick > >> > > > >> > > On 16 May 2012 22:58, Dave Cottlehuber <[email protected]> wrote: > >> > > > >> > > > On 16 May 2012 20:37, Nick North <[email protected]> wrote: > >> > > > > >> > > > > Thanks for replying - that test does show up a problem. It works > >> fine > >> > > on > >> > > > my > >> > > > > Win7 machine but, on Windows Server, says: > >> > > > > > >> > > > > Erlang R15B (erts-5.9) [source] [smp:2:2] [async-threads:0] > >> > > > > > >> > > > > Eshell V5.9 (abort with ^G) > >> > > > > 1> application:load(snappy). > >> > > > > ok > >> > > > > 2> application:start(snappy). > >> > > > > ok > >> > > > > 3> c(snappy_tests). > >> > > > > {ok,snappy_tests} > >> > > > > 4> snappy_tests:test(). > >> > > > > snappy_tests: compression_test_...*failed* > >> > > > > ::snappy_nif_not_loaded > >> > > > > > >> > > > > > >> > > > > snappy_tests: decompression_test_...*failed* > >> > > > > ::snappy_nif_not_loaded > >> > > > > > >> > > > > > >> > > > > ======================================================= > >> > > > > Failed: 2. Skipped: 0. Passed: 0. > >> > > > > error > >> > > > > > >> > > > > Both systems have snappy_nif.dll, in the > >> > > %COUCHDB%\lib\snappy-1.0.3\priv > >> > > > > directory and they look to be the same file, at least as far as > >> can > >> > be > >> > > > > determined from Windows Explorer. > >> > > > > > >> > > > > C++ runtime versions are fairly different. The server has 2008 > x64 > >> > and > >> > > > x86, > >> > > > > and 2010 x86. The Win7 machine has 2005 x64, 2008 x64 and x86, > >> 2010 > >> > x64 > >> > > > and > >> > > > > x86 and the C++ 11 Beta x64. There are various sub-versions of > >> each, > >> > > and > >> > > > I > >> > > > > can give more details if that is useful. > >> > > > > > >> > > > > > >> > > > I'd like to know *exactly* what the server is using for > >> > vcredist_x86.exe > >> > > > (VC10 version > >> > > > only). You can see this with sigcheck[1] if you have the original > >> > > vcredist > >> > > > to hand. > >> > > > > >> > > > When erlang/couch is running you can use listdlls[2] or procexp[3] > >> to > >> > > peek > >> > > > in and > >> > > > see what runtime it has decided to use. > >> > > > > >> > > > After all that, try installing this vcredist version[4] and seeing > >> if > >> > > that > >> > > > resolves things. > >> > > > > >> > > > There are numerous bugs in the dll load path stuff on windows, and > >> IIRC > >> > > > different > >> > > > manifestations of that across OS versions. Let's hope this is not > >> the > >> > > > issue here! > >> > > > > >> > > > Finally, screw MS for releasing the same filename with 3 > consecutive > >> > VC++ > >> > > > releases.. > >> > > > that's plain dumb. I'll reserve my vituperation for twitter. > >> > > > > >> > > > A+ > >> > > > Dave > >> > > > > >> > > > [1]: http://technet.microsoft.com/en-us/sysinternals/bb897441< > >> > > > http://technet.microsoft.com/en-us/sysinternals/bb897441.aspx> > >> > > > [2]: http://technet.microsoft.com/en-us/sysinternals/bb896656 > >> > > > [3]: http://technet.microsoft.com/en-us/sysinternals/bb896653 > >> > > > [4]: > >> > > > > >> > > > > >> > > > >> > > >> > http://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe > >> > > > [5]: msdn.microsoft.com/en-us/library/windows/desktop/ms682586 > >> > > > > >> > > > >> > > >> > > > > I can confirm that, snappy definitely fails on Windows 2008 R2 server. > I'm > > still downloading SDKs and dependencies to see why. > > > > A+ > > Dave > > > > > Nick, here's a (very) fresh build [1], not for prod use but it > should allow you to confirm if the original issue is fixed. > It's R15B01 with static OpenSSL included, + a workaround > for the issue [2]. The check is to run depends.exe against > the snappy_nif.dll and confirm the *100d.DLL runtimes are gone. > > Now I am not yet sure if the fix *cough* hack I applied > is a minimal fix or not so please just use this for testing. > > You can install it alongside e.g. c:\tmp\1.2.0, tweak local.ini > > [httpd] > port = 5985 > > and run the .bat file (no service reqd) without screwing your > production stuff. The same test as before is sufficient. > > A+ > Dave > > [1]: > https://www.dropbox.com/sh/jeifcxpbtpo78ak/Yri8o1U6ig/snapshots/20120523 > [2]: https://issues.apache.org/jira/browse/COUCHDB-1482 > [3]: http://www.cmake.org/ >
