From 74493bf4460f4024e06760289735e9d5dcb9dc3f Mon Sep 17 00:00:00 2001
From: kaashoek <kaashoek>
Date: Fri, 25 Aug 2006 00:43:17 +0000
Subject: [PATCH] kill user process when it generates an unhandled trap (e.g.,
 13) fix bug in test code of malloc

---
 trap.c      |  4 +++-
 umalloc.c   |  6 ------
 usertests.c | 12 ------------
 3 files changed, 3 insertions(+), 19 deletions(-)

diff --git a/trap.c b/trap.c
index d201990..f26024b 100644
--- a/trap.c
+++ b/trap.c
@@ -126,8 +126,10 @@ trap(struct trapframe *tf)
   }
 
   cprintf("trap %d from cpu %d eip %x\n", v, cpu(), tf->eip);
-  if(curproc[cpu()])
+  if(curproc[cpu()]) {
     cprintf("pid %d\n", curproc[cpu()]->pid);
+    proc_exit();
+  }
   //  panic("trap");
 
   return;
diff --git a/umalloc.c b/umalloc.c
index 11d816a..cdf099e 100644
--- a/umalloc.c
+++ b/umalloc.c
@@ -26,8 +26,6 @@ free(void *ap)
 {
   Header *bp, *p;
 
-  printf(1, "free\n");
-
   bp = (Header *) ap - 1;
   for (p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)
     if (p >= p->s.ptr && (bp > p || bp < p->s.ptr))
@@ -53,7 +51,6 @@ morecore(uint nu)
   
   if (nu < PAGE)
     nu = PAGE;
-  printf(1, "call sbrk\n");
   cp = sbrk(nu * sizeof(Header));
   if (cp == (char *) -1)
     return 0;
@@ -69,8 +66,6 @@ malloc(uint nbytes)
   Header *p, *prevp;
   uint nunits;
 
-  printf(1, "malloc %d\n", nbytes);
-
   nunits = (nbytes + sizeof(Header) - 1)/sizeof(Header) + 1;
   if ((prevp = freep) == 0) {
     base.s.ptr = freep = prevp = &base;
@@ -86,7 +81,6 @@ malloc(uint nbytes)
 	p->s.size = nunits;
       }
       freep = prevp;
-      printf(1, "malloc returns: %d\n", (int) (p+1));
       return (void *) (p + 1);
     }
     if (p == freep) 
diff --git a/usertests.c b/usertests.c
index cb01c92..2b8b64f 100644
--- a/usertests.c
+++ b/usertests.c
@@ -120,20 +120,8 @@ exitwait(void)
 void
 mem(void)
 {
-  void *m = malloc(4096);
   void *m1, *m2;
 
-  free(m + 3*1024);
-  free(m + 2*1024);
-  free(m + 1024);
-  free(m);
-  m1 = malloc(4096);
-  if (m1 != m) {
-    puts("didn't coalesce\n");
-    exit();
-  }
-  free(m1);
-  
   m1 = 0;
   while ((m2 = malloc(1024)) != 0) {
     *(char **) m2 = m1;
-- 
GitLab