Apply by doing:
       cd /usr/src/sys/arch/i386/i386
       patch < trctrap.patch

build a new kernel, ie.
       cd /usr/src/sys/arch/i386/conf
       config GENERIC
       cd ../compile/GENERIC
       make
       mv /bsd /bsd.1
       cp bsd /bsd
       reboot

Index: locore.s
===================================================================
RCS file: /cvs/src/sys/arch/i386/i386/locore.s,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- locore.s    1998/09/06 20:09:58     1.45
+++ locore.s    1999/02/12 19:40:12     1.46
@@ -2067,6 +2067,7 @@
       popfl
       pushl   $7              # size of instruction for restart
       jmp     syscall1
+IDTVEC(osyscall_end)

/*
 * Trap gate entry for syscall
Index: trap.c
===================================================================
RCS file: /cvs/src/sys/arch/i386/i386/trap.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- trap.c      1999/02/10 08:07:20     1.28
+++ trap.c      1999/02/12 19:40:12     1.29
@@ -220,6 +220,26 @@

       switch (type) {

+       /* trace trap */
+       case T_TRCTRAP: {
+#ifdef DDB
+               /* Make sure nobody is single stepping into kernel land.
+                * The syscall has to turn off the trace bit itself.  The
+                * easiest way, is to simply not call the debugger, until
+                * we are through the problematic "osyscall" stub.  This
+                * is a hack, but it does seem to work.
+                */
+               extern int Xosyscall, Xosyscall_end;
+
+               if (frame.tf_eip >= (int)&Xosyscall &&
+                   frame.tf_eip <= (int)&Xosyscall_end)
+                       return;
+#else
+               return; /* Just return if no DDB */
+#endif
+       }
+       /* FALLTHROUGH */
+
       default:
       we_re_toast:
#ifdef DDB
@@ -456,13 +476,6 @@
               trapsignal(p, SIGSEGV, vftype, SEGV_MAPERR, sv);
               break;
       }
-
-#ifndef DDB
-       /* XXX need to deal with this when DDB is present, too */
-       case T_TRCTRAP: /* kernel trace trap; someone single stepping lcall's */
-                       /* syscall has to turn off the trace bit itself */
-               return;
-#endif

       case T_BPTFLT|T_USER:           /* bpt instruction fault */
               sv.sival_int = rcr2();