need for release?
Filip Konvička
filip.konvicka at logis.cz
Fri Feb 1 16:02:58 CET 2008
Hi Boriss,
>> I have now a work-in-progress bugfix regarding pickles on Windows.
>>
>> The problem is that the mechanism used for distinguishing between
>> file and socket descriptors is done using the FD_XXX macros. This is
>> bad, because the mechanism is not robust enough. Recently we are
>> facing problems on long-running server machines, because the file
>> descriptor handles are mistakenly used as socket descriptors, thus
>> "send" is used on them instead of "write" (or vice-versa), resulting
>> in errors.
>>
>> Of course, this bug also affects many other things than pickles - the
>> sockets and file io themselves, and many unexpected
>> distributed-programming failures.
>
> Since this is a bug mainly concerning windows, be sure that the fix
> you add is
> within the #ifdef WINDOWS ... #endif marks
Sure, the existing code I'm intending to fix already is put within such
blocks.
>> The solution is obvious - use a dynamic-sized unordered set for the
>> socket descriptors. But - I need to know what are the choices for
>> such implementation. Of course I don't want to introduce problems by
>> writing my own hashtable implementation, so I'd like to use
>> boost::unordered_set or at least std::map (this would degrade
>> performance a bit in heavy-IO programs). But STD Lib is not used
>> anywhere in Mozart, neither is boost, so I'm reluctant to introducing
>> a new dependency.
>
> True. It wouldn't be nice to add new dependencies. But as far as we
> know, the
> code of boost and std are freely available, so you could just add the
> code of
> what you need into the Mozart sources. Just be sure to put the
> corresponding
> notes to be compliant with their license.
Yes, but particularly Boost is rather picky about compilers...then
again, it's probably fine with recent gcc, and since this would be
Windows-specific, it should probably not be such a big problem. So I'll
explore the std::map approach first, and then I'll try to extract some
minimal subset of boost that provides some unordered set implementation.
I'll let you know which works best and we can decide where to put the
fixes in the svn.
I suppose that you still use the procedure described here
http://www.mozart-oz.org/documentation/install/node7.html#section.cygwin.environment
to do the compilation? I believe that the current MSVC 9.0 Express
Edition should be sufficient for the build, but I'm not going to rebuild
GMP and other stuff, so if you have newer versions of the required
packages for Windows, please let me know.
Cheers,
Filip
More information about the mozart-hackers
mailing list