diff --git a/server/trace.c b/server/trace.c
index 744bc84..14fa6f2 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -299,7 +299,8 @@
 static void dump_new_thread_request( const struct new_thread_request *req )
 {
     fprintf( stderr, " suspend=%d,", req->suspend );
-    fprintf( stderr, " inherit=%d", req->inherit );
+    fprintf( stderr, " inherit=%d,", req->inherit );
+    fprintf( stderr, " request_fd=%d", req->request_fd );
 }
 
 static void dump_new_thread_reply( const struct new_thread_request *req )
@@ -351,14 +352,12 @@
 {
     fprintf( stderr, " unix_pid=%d,", req->unix_pid );
     fprintf( stderr, " teb=%p,", req->teb );
-    fprintf( stderr, " entry=%p", req->entry );
+    fprintf( stderr, " entry=%p,", req->entry );
+    fprintf( stderr, " reply_fd=%d,", req->reply_fd );
+    fprintf( stderr, " wait_fd=%d", req->wait_fd );
 }
 
-static void dump_get_thread_buffer_request( const struct get_thread_buffer_request *req )
-{
-}
-
-static void dump_get_thread_buffer_reply( const struct get_thread_buffer_request *req )
+static void dump_init_thread_reply( const struct init_thread_request *req )
 {
     fprintf( stderr, " pid=%p,", req->pid );
     fprintf( stderr, " tid=%p,", req->tid );
@@ -366,6 +365,17 @@
     fprintf( stderr, " version=%d", req->version );
 }
 
+static void dump_set_thread_buffer_request( const struct set_thread_buffer_request *req )
+{
+    fprintf( stderr, " fd=%d", req->fd );
+}
+
+static void dump_set_thread_buffer_reply( const struct set_thread_buffer_request *req )
+{
+    fprintf( stderr, " offset=%08x,", req->offset );
+    fprintf( stderr, " size=%08x", req->size );
+}
+
 static void dump_terminate_process_request( const struct terminate_process_request *req )
 {
     fprintf( stderr, " handle=%d,", req->handle );
@@ -1492,7 +1502,7 @@
     (dump_func)dump_init_process_request,
     (dump_func)dump_init_process_done_request,
     (dump_func)dump_init_thread_request,
-    (dump_func)dump_get_thread_buffer_request,
+    (dump_func)dump_set_thread_buffer_request,
     (dump_func)dump_terminate_process_request,
     (dump_func)dump_terminate_thread_request,
     (dump_func)dump_get_process_info_request,
@@ -1603,8 +1613,8 @@
     (dump_func)0,
     (dump_func)dump_init_process_reply,
     (dump_func)dump_init_process_done_reply,
-    (dump_func)0,
-    (dump_func)dump_get_thread_buffer_reply,
+    (dump_func)dump_init_thread_reply,
+    (dump_func)dump_set_thread_buffer_reply,
     (dump_func)dump_terminate_process_reply,
     (dump_func)dump_terminate_thread_reply,
     (dump_func)dump_get_process_info_reply,
@@ -1716,7 +1726,7 @@
     "init_process",
     "init_process_done",
     "init_thread",
-    "get_thread_buffer",
+    "set_thread_buffer",
     "terminate_process",
     "terminate_thread",
     "get_process_info",
@@ -1884,7 +1894,6 @@
 {
     enum request req = request->header.req;
     cur_pos = 0;
-    current->last_req = req;
     if (req < REQ_NB_REQUESTS)
     {
         fprintf( stderr, "%08x: %s(", (unsigned int)thread, req_names[req] );
@@ -1897,14 +1906,20 @@
 
 void trace_reply( struct thread *thread, const union generic_request *request )
 {
-    fprintf( stderr, "%08x: %s() = %s",
-             (unsigned int)thread, req_names[thread->last_req], get_status_name(thread->error) );
-    if (reply_dumpers[thread->last_req])
+    enum request req = request->header.req;
+    if (req < REQ_NB_REQUESTS)
     {
-        fprintf( stderr, " {" );
-        cur_pos = 0;
-        reply_dumpers[thread->last_req]( request );
-        fprintf( stderr, " }" );
+        fprintf( stderr, "%08x: %s() = %s",
+                 (unsigned int)thread, req_names[req], get_status_name(thread->error) );
+        if (reply_dumpers[req])
+        {
+            fprintf( stderr, " {" );
+            cur_pos = 0;
+            reply_dumpers[req]( request );
+            fprintf( stderr, " }" );
+        }
+        fputc( '\n', stderr );
     }
-    fputc( '\n', stderr );
+    else fprintf( stderr, "%08x: %d() = %s\n",
+                  (unsigned int)thread, req, get_status_name(thread->error) );
 }
