diff --git a/userprog/syscall.c b/userprog/syscall.c
index 24a265420b8dd82f46874e7cd85af02ca9f36c36..36285fa804bdc8218b41a750b0a253f6f2d96eab 100644
--- a/userprog/syscall.c
+++ b/userprog/syscall.c
@@ -60,6 +60,7 @@ syscall_handler (struct intr_frame *f UNUSED)
     break;
   case SYSCALL_EXIT:
     syscall_exit(f);
+    thread_exit();
     break;
   case SYSCALL_EXEC:
     syscall_exec(f);
diff --git a/userprog/syscall_write.c b/userprog/syscall_write.c
index 24e70395ab52c0e19a06d5ba57dfe2176bd87354..e866540fc8ac6aa518dc0dc925028c95f7ca36db 100644
--- a/userprog/syscall_write.c
+++ b/userprog/syscall_write.c
@@ -13,9 +13,6 @@ void syscall_write(struct intr_frame *f) {
     int fd = *((int*)f->esp + 1); // file descriptor is second argument
     void* buffer = (void*)(*((int*)f->esp + 2)); // buffer is third argument
     unsigned size = *((unsigned*)((int*)f->esp + 3)); // size to write is fourth
-    printf("syscall_write: fd = %d\n", fd);
-    printf("syscall_write: buffer = '%s'\n", buffer);
-    printf("syscall_write: size = %u\n", size);
     // writing to stdout or stderr (fd in {1, 2}) is a special case
     switch (fd) {
     case 1: