Index: /lang/c/mpio/trunk/src/iothreads_reader.cc
===================================================================
--- /lang/c/mpio/trunk/src/iothreads_reader.cc (revision 21965)
+++ /lang/c/mpio/trunk/src/iothreads_reader.cc (revision 22131)
@@ -219,7 +219,6 @@
 
 namespace {
-static void close_delete_handler(int fd, handler* h) {
+static void close_fd(int fd) {
 	::close(fd);
-	delete h;
 }
 }
@@ -238,6 +237,8 @@
 
 void reader::impl::worker::remove_handler(handler* h)
-try {
-	m_ev.remove(h->fd(), EV_READ);
+{
+	int fd = h->fd();
+	m_ev.remove(fd, EV_READ);
+	delete h;
 	//::close(fd);  // FIXME close(2)はロジックスレッドで
 	// 1. fdに対してイベント到着
@@ -246,8 +247,9 @@
 	// 4. イベントに対して返信するためにsend_data
 	// 5. 期待とは異なるfdに返信されてしまう
-	iothreads::submit(close_delete_handler, h->fd(), h);
-} catch (...) {
-	::close(h->fd());
-	delete h;
+	try {
+		iothreads::submit(close_fd, fd);
+	} catch (...) {
+		::close(fd);
+	}
 }
 
