cvs commit: src/sys/ia64/ia64 db_trace.c unwind.c src/sys/ia64/include unwind.h

Marcel Moolenaar marcel at FreeBSD.org
Sat Jul 5 16:22:00 PDT 2003


marcel      2003/07/05 16:21:58 PDT

  FreeBSD src repository

  Modified files:
    sys/ia64/ia64        db_trace.c unwind.c 
    sys/ia64/include     unwind.h 
  Log:
  Don't call malloc() and free() while in the debugger and unwinding
  to get a stacktrace. This does not work even with M_NOWAIT when we
  have WITNESS and is generally a bad idea (pointed out by bde@). We
  allocate an 8K heap for use by the unwinder when ddb is active. A
  stack trace roughly takes up half of that in any case, so we have
  some room for complex unwind situations. We don't want to waste too
  much space though. Due to the nature of unwinding, we don't worry
  too much about fragmentation or performance of unwinding while in
  the debugger. For now we have our own heap management, but we may
  be able to leverage from existing code at some later time.
  
  While here:
  o  Make sure we actually free the unwind environment after unwinding.
     This fixes a memory leak.
  o  Replace Doug's license with mine in unwind.c and unwind.h. Both
     files don't have much, if any, of Doug's code left since the EPC
     syscall overhaul and the import of the unwinder.
  o  Remove dead code.
  o  Replace M_NOWAIT with M_WAITOK for all remaining malloc() calls.
  
  Revision  Changes    Path
  1.16      +2 -0      src/sys/ia64/ia64/db_trace.c
  1.8       +106 -42   src/sys/ia64/ia64/unwind.c
  1.4       +14 -13    src/sys/ia64/include/unwind.h


More information about the cvs-all mailing list