diff --git a/src/core/support/cpu_windows.c b/src/core/support/cpu_windows.c
index cb454ccd3beed4f732f484b2f0a8088e89d8a7fb..f56bab3f8b42b9ea949fe0cfbb2411bf2696e895 100644
--- a/src/core/support/cpu_windows.c
+++ b/src/core/support/cpu_windows.c
@@ -34,19 +34,17 @@
 #include <grpc/support/port_platform.h>
 
 #ifdef GPR_WIN32
-
+#include <windows.h>
 #include <grpc/support/log.h>
 
 unsigned gpr_cpu_num_cores(void) {
-  /* TODO(jtattermusch): implement */
-  gpr_log(GPR_ERROR, "Cannot determine number of CPUs: assuming 1");
-  return 1;
+  SYSTEM_INFO si;
+  GetSystemInfo(&si);
+  return si.dwNumberOfProcessors;
 }
 
 unsigned gpr_cpu_current_cpu(void) {
-  /* TODO(jtattermusch): implement */
-  gpr_log(GPR_ERROR, "Cannot determine current CPU");
-  return 0;
+  return GetCurrentProcessorNumber();
 }
 
 #endif /* GPR_WIN32 */
diff --git a/src/core/surface/call.c b/src/core/surface/call.c
index 5513a63332ab8c1996f96a4e73908a6c201b5788..136921656fce1e46182c69d797622f72f567a230 100644
--- a/src/core/surface/call.c
+++ b/src/core/surface/call.c
@@ -711,6 +711,10 @@ static void call_on_done_recv(void *pc, int success) {
     if (call->recv_state == GRPC_STREAM_CLOSED) {
       GPR_ASSERT(call->read_state <= READ_STATE_STREAM_CLOSED);
       call->read_state = READ_STATE_STREAM_CLOSED;
+      if (call->have_alarm) {
+        grpc_alarm_cancel(&call->alarm);
+        call->have_alarm = 0;
+      }
     }
     finish_read_ops(call);
   } else {
diff --git a/src/core/surface/channel.c b/src/core/surface/channel.c
index 78f9144c19c980998bd41928170a5aa90a8c9ae0..be9da2b7f95104232c5b31bf142a606e995f3128 100644
--- a/src/core/surface/channel.c
+++ b/src/core/surface/channel.c
@@ -128,13 +128,6 @@ static grpc_call *grpc_channel_create_call_internal(
                           GPR_ARRAY_SIZE(send_metadata), deadline);
 }
 
-grpc_call *grpc_channel_create_call_old(grpc_channel *channel,
-                                        const char *method, const char *host,
-                                        gpr_timespec absolute_deadline) {
-  return grpc_channel_create_call(channel, NULL, method, host,
-                                  absolute_deadline);
-}
-
 grpc_call *grpc_channel_create_call(grpc_channel *channel,
                                     grpc_completion_queue *cq,
                                     const char *method, const char *host,
diff --git a/src/csharp/ext/grpc_csharp_ext.c b/src/csharp/ext/grpc_csharp_ext.c
index e182468d9b0d0bdfbab4eb9fb154501d735f15d9..fb8b75798d33c5e155222c668ac79db395e9a549 100644
--- a/src/csharp/ext/grpc_csharp_ext.c
+++ b/src/csharp/ext/grpc_csharp_ext.c
@@ -415,16 +415,6 @@ GPR_EXPORT void GPR_CALLTYPE grpcsharp_call_destroy(grpc_call *call) {
   grpc_call_destroy(call);
 }
 
-GPR_EXPORT void GPR_CALLTYPE
-grpcsharp_call_start_write_from_copied_buffer(grpc_call *call,
-                                              const char *buffer, size_t len,
-                                              void *tag, gpr_uint32 flags) {
-  grpc_byte_buffer *byte_buffer = string_to_byte_buffer(buffer, len);
-  GPR_ASSERT(grpc_call_start_write_old(call, byte_buffer, tag, flags) ==
-             GRPC_CALL_OK);
-  grpc_byte_buffer_destroy(byte_buffer);
-}
-
 GPR_EXPORT grpc_call_error GPR_CALLTYPE
 grpcsharp_call_start_unary(grpc_call *call, callback_funcptr callback,
                            const char *send_buffer, size_t send_buffer_len,
diff --git a/src/python/src/grpc/_adapter/_call.h b/src/python/src/grpc/_adapter/_call.h
index fb9160901baf084b78e8a4905d33eb0166297b74..b4cf9d7ec99f969095938a865de42f90c8d5de3f 100644
--- a/src/python/src/grpc/_adapter/_call.h
+++ b/src/python/src/grpc/_adapter/_call.h
@@ -70,7 +70,7 @@ typedef struct {
   grpc_call *c_call;
 } Call;
 
-PyTypeObject pygrpc_CallType;
+extern PyTypeObject pygrpc_CallType;
 
 int pygrpc_add_call(PyObject *module);
 
diff --git a/src/python/src/grpc/_adapter/_channel.h b/src/python/src/grpc/_adapter/_channel.h
index afc0f80359d3fb6003f6de62541e5866f1fbad8e..65894939a23302911739d0fa119d15b4868c5751 100644
--- a/src/python/src/grpc/_adapter/_channel.h
+++ b/src/python/src/grpc/_adapter/_channel.h
@@ -42,7 +42,7 @@ typedef struct {
   grpc_channel *c_channel;
 } Channel;
 
-PyTypeObject pygrpc_ChannelType;
+extern PyTypeObject pygrpc_ChannelType;
 
 int pygrpc_add_channel(PyObject *module);
 
diff --git a/src/python/src/grpc/_adapter/_client_credentials.h b/src/python/src/grpc/_adapter/_client_credentials.h
index bb9f7f0c3a17a02fa4a5ecdf26353cd8fb652b2f..fe04016d20cf29e6a0d6464e346b423dabaf30c9 100644
--- a/src/python/src/grpc/_adapter/_client_credentials.h
+++ b/src/python/src/grpc/_adapter/_client_credentials.h
@@ -42,7 +42,7 @@ typedef struct {
   grpc_credentials *c_client_credentials;
 } ClientCredentials;
 
-PyTypeObject pygrpc_ClientCredentialsType;
+extern PyTypeObject pygrpc_ClientCredentialsType;
 
 int pygrpc_add_client_credentials(PyObject *module);
 
diff --git a/src/python/src/grpc/_adapter/_completion_queue.c b/src/python/src/grpc/_adapter/_completion_queue.c
index 5f1cb2a3a680acb41af818502ed412758ab881d5..f616faf629bdcc5ca48230462d3060239b6b579d 100644
--- a/src/python/src/grpc/_adapter/_completion_queue.c
+++ b/src/python/src/grpc/_adapter/_completion_queue.c
@@ -354,6 +354,8 @@ static PyObject *pygrpc_completion_queue_get(CompletionQueue *self,
   PyObject *event_args;
   PyObject *event;
 
+  pygrpc_tag *tag;
+
   if (!(PyArg_ParseTuple(args, "O:get", &deadline))) {
     return NULL;
   }
@@ -380,7 +382,7 @@ static PyObject *pygrpc_completion_queue_get(CompletionQueue *self,
     Py_RETURN_NONE;
   }
 
-  pygrpc_tag *tag = (pygrpc_tag *)c_event->tag;
+  tag = (pygrpc_tag *)c_event->tag;
 
   switch (c_event->type) {
     case GRPC_QUEUE_SHUTDOWN:
diff --git a/src/python/src/grpc/_adapter/_completion_queue.h b/src/python/src/grpc/_adapter/_completion_queue.h
index 9b377d15d9c5831d1eb5ea127981a9237c396dd9..516694daa19483340f82b2693811350130cd6d72 100644
--- a/src/python/src/grpc/_adapter/_completion_queue.h
+++ b/src/python/src/grpc/_adapter/_completion_queue.h
@@ -42,7 +42,7 @@ typedef struct {
   grpc_completion_queue *c_completion_queue;
 } CompletionQueue;
 
-PyTypeObject pygrpc_CompletionQueueType;
+extern PyTypeObject pygrpc_CompletionQueueType;
 
 int pygrpc_add_completion_queue(PyObject *module);
 
diff --git a/src/python/src/grpc/_adapter/_server_credentials.h b/src/python/src/grpc/_adapter/_server_credentials.h
index 6090404bd9561602b5af7f4cf7ce3fa2208693d0..75af9340897940b940d17318ec7df3fbe2f6c7ef 100644
--- a/src/python/src/grpc/_adapter/_server_credentials.h
+++ b/src/python/src/grpc/_adapter/_server_credentials.h
@@ -42,7 +42,7 @@ typedef struct {
   grpc_server_credentials *c_server_credentials;
 } ServerCredentials;
 
-PyTypeObject pygrpc_ServerCredentialsType;
+extern PyTypeObject pygrpc_ServerCredentialsType;
 
 int pygrpc_add_server_credentials(PyObject *module);
 
diff --git a/src/python/src/grpc/_adapter/_tag.h b/src/python/src/grpc/_adapter/_tag.h
index 82987ea102c87de4f9aedfb8eb751d65e03a6f50..b18c44576dae4c3d4bb66e1dd8581f53d5b4a37d 100644
--- a/src/python/src/grpc/_adapter/_tag.h
+++ b/src/python/src/grpc/_adapter/_tag.h
@@ -51,7 +51,7 @@ typedef enum {
   PYGRPC_FINISH_ACCEPTED      = 4,
   PYGRPC_CLIENT_METADATA_READ = 5,
   PYGRPC_FINISHED_CLIENT      = 6,
-  PYGRPC_FINISHED_SERVER      = 7,
+  PYGRPC_FINISHED_SERVER      = 7
 } pygrpc_tag_type;
 
 typedef struct {
diff --git a/src/python/src/setup.py b/src/python/src/setup.py
index 767504967764bb616cca7b08de486fa4674f1905..a13dc4ec19da952f03fe9663618ebf043ad4e487 100644
--- a/src/python/src/setup.py
+++ b/src/python/src/setup.py
@@ -86,7 +86,7 @@ _PACKAGE_DIRECTORIES = {
 
 setuptools.setup(
     name='grpcio',
-    version='0.5.0a1',
+    version='0.5.0a2',
     ext_modules=[_EXTENSION_MODULE],
     packages=list(_PACKAGES),
     package_dir=_PACKAGE_DIRECTORIES,
diff --git a/test/core/fling/server.c b/test/core/fling/server.c
index b7e1c831f0df8fcd8dc82cdb85a33614cb8fd5c6..63c7bd7f884ebcb8ac92ce72c7100b605b3bd126 100644
--- a/test/core/fling/server.c
+++ b/test/core/fling/server.c
@@ -39,6 +39,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
+#include <unistd.h>
 
 #include "test/core/util/grpc_profiler.h"
 #include "test/core/util/test_config.h"
@@ -165,7 +166,7 @@ static void start_send_status(void) {
                                  tag(FLING_SERVER_SEND_STATUS_FOR_STREAMING)));
 }
 
-static void sigint_handler(int x) { got_sigint = 1; }
+static void sigint_handler(int x) { _exit(0); }
 
 int main(int argc, char **argv) {
   grpc_event *ev;