thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peace C (JIRA)" <>
Subject [jira] [Commented] (THRIFT-1690) Sockets and Pipe Handles truncated on Win64
Date Tue, 13 Nov 2012 19:34:12 GMT


Peace C commented on THRIFT-1690:

The fixes are very much appreciated. We're not building 64-bit yet but when the time comes
this will be beneficial.

A consequence of the restructuring (wrapping the Pipe classes with #ifdef _WIN32 and typedef'ing
the name for *NIX) is that it's more difficult to implement anonymous pipes for *NIX. It'll
be alot of duplicated code since all the Pipe related methods will need to be replicated for
*NIX. It also makes the calling code less platform-agnostic. With these changes, the calling
code can't be cross-platform for Windows & *NIX because, for example, setPipename doesn't
exist in TServerSocket. You've just moved the burden of the #ifdefs from the abstract Pipe
class to the calling code. That was the motivation for casting HANDLE to int and vice-versa.
Perhaps we could cast between IntPtr instead?
> Sockets and Pipe Handles truncated on Win64
> -------------------------------------------
>                 Key: THRIFT-1690
>                 URL:
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.9
>         Environment: 64-bit Windows
>            Reporter: Ben Craig
>            Assignee: Roger Meier
>         Attachments: lib_socket_typedef.patch, libthrift_pipe_size.patch, libthrift_warning_purge.patch
>   Original Estimate: 48h
>  Remaining Estimate: 48h
> On 64-bit Windows, "int" is a 32-bit value.  SOCKET and HANDLE are 64-bit.
> All of the files dealing with sockets in thrift use "int" as the type of a socket, as
this is the idiomatic way to handle sockets on POSIX systems.  For portability, a SOCKET typedef
is probably needed.
> For the Pipe Server and Pipe Transport, HANDLEs are cast to ints to store as member variables
for some reason (maybe to avoid #including <windows.h> in a header?).
> Both of these situations can result in invalid handles being used (and valid handles
being leaked) when the system is under load.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message