[Bug 18643] NCSoft Launcher crashes after being run.

wine-bugs at winehq.org wine-bugs at winehq.org
Sat May 30 11:31:18 CDT 2009


http://bugs.winehq.org/show_bug.cgi?id=18643





--- Comment #9 from Anastasius Focht <focht at gmx.net>  2009-05-30 11:31:18 ---
Hello again,

handling FSCTL_PIPE_LISTEN (ps_wait_connect) synchronously seems to help - even
if the pipe was created with overlapped flags - the app starts downloading
updates and proceeds further.
Maybe ConnectNamedPipe()'s NULL overlapped has precedence over fd options... AJ
probably knows ;-)

Relevant snippet:

--- snip server/named_pipe.c ---

static obj_handle_t pipe_server_ioctl( struct fd *fd, ioctl_code_t code, const
async_data_t *async_data,
                                       int blocking, const void *data,
data_size_t size )
{
    struct pipe_server *server = get_fd_user( fd );
    struct async *async;
    obj_handle_t wait_handle = 0;

    switch(code)
    {
    case FSCTL_PIPE_LISTEN:
        switch(server->state)
        {
        case ps_idle_server:
        case ps_wait_connect:
            if (blocking && !is_overlapped( get_fd_options(fd) ))
            {
                async_data_t new_data = *async_data;
                if (!(wait_handle = alloc_wait_event( current->process )))
break;
                new_data.event = wait_handle;
                if (!(async = fd_queue_async( server->ioctl_fd, &new_data,
ASYNC_TYPE_WAIT )))
                {
                    close_handle( current->process, wait_handle );
                    break;
                }
            }
            else async = fd_queue_async( server->ioctl_fd, async_data,
ASYNC_TYPE_WAIT );

            if (async)
            {
                set_server_state( server, ps_wait_open );
                if (server->pipe->waiters) async_wake_up(
server->pipe->waiters, STATUS_SUCCESS );
                release_object( async );
                set_error( STATUS_PENDING );
                return wait_handle;
            }
            break;
--- snip server/named_pipe.c ---

After that bug is fixed, another one is waiting (ShellExecuteEx) ;-)

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list