Fixed a couple of bugs (silent backtrace not totally silent, crashes
when the stack is corrupted or similar).

diff --git a/debugger/stack.c b/debugger/stack.c
index 6888f30..82cd1e6 100644
--- a/debugger/stack.c
+++ b/debugger/stack.c
@@ -189,7 +189,8 @@
     nframe = 1;
     if (frames) DBG_free( frames );
     frames = (struct bt_info *) DBG_alloc( sizeof(struct bt_info) );
-    fprintf(stderr,"%s%d ",(curr_frame == 0 ? "=>" : "  "), frameno);
+    if (noisy)
+      fprintf(stderr,"%s%d ",(curr_frame == 0 ? "=>" : "  "), frameno);
 
     if (IS_SELECTOR_SYSTEM(ss)) ss = 0;
     if (IS_SELECTOR_SYSTEM(cs)) cs = 0;
@@ -232,6 +233,10 @@
       sw_addr.seg = ss;
       sw_addr.off = cur_switch;
     }
+    if (DEBUG_IsBadReadPtr(&sw_addr,1)) {
+      sw_addr.seg = (DWORD)-1;
+      sw_addr.off = (DWORD)-1;
+    }
 
     for (ok = TRUE; ok;) {
       if ((frames[frameno].ss == sw_addr.seg) &&
@@ -269,6 +274,10 @@
 
           is16 = TRUE;
         }
+        if (DEBUG_IsBadReadPtr(&sw_addr,1)) {
+          sw_addr.seg = (DWORD)-1;
+          sw_addr.off = (DWORD)-1;
+        }
       } else {
         /* ordinary stack frame */
         ok = is16 ? DEBUG_Frame16( &addr, &cs, ++frameno, noisy)