Changeset 6e5833 in git


Ignore:
Timestamp:
Mar 19, 1999, 6:42:33 PM (25 years ago)
Author:
Olaf Bachmann <obachman@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
2efb0e4a1f16840557ae3ada88076edccb960534
Parents:
105efeceef55c91a7f3c55acd25aac54cf6ae7ba
Message:
* some improvements to mmbt


git-svn-id: file:///usr/local/Singular/svn/trunk@2963 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
Singular
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • Singular/mmalloc.c

    r105efec r6e5833  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: mmalloc.c,v 1.13 1999-03-19 16:00:04 Singular Exp $ */
     4/* $Id: mmalloc.c,v 1.14 1999-03-19 17:42:27 obachman Exp $ */
    55
    66/*
     
    227227  mmFillDBMCB(what, SizeFromRealSize(mmGetHeapBlockSize(heap)),
    228228              heap, MM_FREEFLAG, fname, lineno);
     229
     230#ifdef MTRACK
     231  mmTrack(what->bt_stack);
     232#endif 
    229233}
    230234
  • Singular/mmbt.c

    r105efec r6e5833  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: mmbt.c,v 1.7 1999-03-19 16:00:05 Singular Exp $ */
     4/* $Id: mmbt.c,v 1.8 1999-03-19 17:42:28 obachman Exp $ */
    55/*
    66* ABSTRACT: backtrace: part of memory subsystem (for linux/elf)
     
    101101    j=fscanf(f,"%d %s\n",(int *)&p2n[i].p,n);
    102102    if (j!=2) break;
    103     p2n[i].name=strdup(n);
    104     i++;
     103    if (strcmp(n, "___crt_dummy__") != 0 && strcmp(n, "_start") != 0)
     104    {
     105      p2n[i].name=strdup(n);
     106      i++;
     107    }
    105108  }
    106109  fclose(f);
     
    112115char * mmP2cName(unsigned long p)
    113116{
     117  int i, e;
    114118  int a=0;
    115   int e=mm_p2n_max;
    116   int i;
    117119  if (mm_p2n_max == -1)
    118120    mmP2cNameInit();
     121  e=mm_p2n_max;
    119122  loop
    120123  {
     
    148151}
    149152
    150 void mmPrintStack(unsigned long *bt_stack) /* print stack */
     153void mmPrintStack(unsigned long *stack, int all)
    151154{
    152   int i=0;
     155  mmPrintStackFrames(stack, 0, BT_MAXSTACK, all);
     156}
     157
     158void mmDBPrintStack(void* memblock, int all)
     159{
     160  mmPrintStackFrames(((DBMCB*) memblock)->bt_stack, 0, BT_MAXSTACK, all);
     161}
     162
     163void mmDBPrintStackFrames(void* memblock, int start, int end)
     164{
     165  mmPrintStackFrames(((DBMCB*) memblock)->bt_stack, start, end,
     166                     MM_PRINT_ALL_STACK);
     167}
     168
     169/* print stack */
     170void mmPrintStackFrames(unsigned long *bt_stack, int start, int end, int mm)
     171{
     172  int i=start;
    153173  PrintS(" ");
    154174  do
    155175  {
    156176    char *s;
    157     fprintf( stderr,":%x",bt_stack[i]);
    158177    s=mmP2cName(bt_stack[i]);
    159178    if (s!=NULL)
    160       fprintf( stderr,"/%s",s);
     179    {
     180      if ((mm & MM_PRINT_ALL_STACK) || strncmp(s, "mm", 2) !=0)
     181        fprintf( stderr,":%s",s);
     182      if (strcmp(s, "main") == 0) break;
     183    }
     184    else
     185      fprintf( stderr,":%x",bt_stack[i]);
    161186    i++;
    162   } while ((i<BT_MAXSTACK) && (bt_stack[i]!=0));
     187  } while ((i<end) && (bt_stack[i]!=0));
    163188  fprintf( stderr,"\n");
    164189}
  • Singular/mmbt.h

    r105efec r6e5833  
    44*  Computer Algebra System SINGULAR     *
    55****************************************/
    6 /* $Id: mmbt.h,v 1.2 1999-03-19 16:00:05 Singular Exp $ */
     6/* $Id: mmbt.h,v 1.3 1999-03-19 17:42:29 obachman Exp $ */
    77/*
    88* ABSTRACT: backtrace: part of memory subsystem (for linux/elf)
     
    2626void mmP2cNameInit(); /* init. of PC -> Name resolution */
    2727char * mmP2cName(unsigned long p); /* PC -> Name resolution */
    28 void mmPrintStack(unsigned long *bt_stack); /* print stack */
     28void mmPrintStack(unsigned long *stack, int mm);
     29void mmDBPrintStack(void* memblock, int mm);
     30void mmDBPrintStackFrames(void* memblock, int start, int end);
     31void mmPrintStackFrames(unsigned long *bt_stack, int start, int end, int mm);
    2932
    3033#endif /* linux, i386 */
  • Singular/mmcheck.c

    r105efec r6e5833  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: mmcheck.c,v 1.5 1999-03-19 16:00:06 Singular Exp $ */
     4/* $Id: mmcheck.c,v 1.6 1999-03-19 17:42:29 obachman Exp $ */
    55
    66/*
     
    116116{
    117117  (void)fprintf( stderr, "warning: %s\n", msg );
    118   (void)fprintf( stderr, "block %x allocated in: %s:%d\n",
    119      (int)&(what->data), what->fname, what->lineno );
     118  (void)fprintf( stderr, "block %x %s in: %s:%d",
     119                 (int)&(what->data),
     120                 (what->flags & MM_FREEFLAG ? "freed" : "allocated" ),
     121                 what->fname, what->lineno );
     122#ifdef MTRACK
     123  mmDBPrintStack(what, MM_PRINT_ALL_STACK);
     124#else
     125  fprintf( stderr,"\n");
     126#endif 
    120127  if (strcmp(msg,"size")==0)
    121128    (void)fprintf( stderr, "size is: %d, but check said %d \n",
     
    165172  what->lineno = lineno;
    166173  what->flags = flags;
     174  what->init = 0;
    167175 
    168176  if (flags & MM_FREEFLAG)
     
    171179  memset(what->front_pattern, MM_FRONT_PATTERN, MM_NUMBER_OF_FRONT_PATTERNS);
    172180  memset((char*) addr + size, MM_BACK_PATTERN, DebugOffsetBack);
     181}
     182
     183void mmMarkInitDBMCB()
     184{
     185  DBMCB * what=mm_theDBused.next;
     186  while (what != NULL)
     187  {
     188    what->init = 1;
     189    what = what->next;
     190  }
    173191}
    174192
  • Singular/mmemory.h

    r105efec r6e5833  
    44*  Computer Algebra System SINGULAR     *
    55****************************************/
    6 /* $Id: mmemory.h,v 1.16 1999-03-19 14:18:01 obachman Exp $ */
     6/* $Id: mmemory.h,v 1.17 1999-03-19 17:42:30 obachman Exp $ */
    77/*
    88* ABSTRACT
     
    117117
    118118void mmPrintUsedList();
     119void mmMarkInitDBMCB();
     120void mmTestList (int all);
    119121
    120122#else
     
    128130#define mmTestMemory 1
    129131#define mmTestHeaps 1
     132#define mmMarkInitDBMCB()
     133#define mmTestList(a)
    130134
    131135#endif /* MDEBUG */
  • Singular/mmisc.c

    r105efec r6e5833  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: mmisc.c,v 1.4 1999-03-19 16:00:07 Singular Exp $ */
     4/* $Id: mmisc.c,v 1.5 1999-03-19 17:42:31 obachman Exp $ */
    55
    66/*
     
    140140
    141141#ifdef MLIST
    142 void mmTestList ( )
     142void mmTestList (int all)
    143143{
    144144  DBMCB * what=mm_theDBused.next;
     
    146146  while (what!=NULL)
    147147  {
    148     fprintf( stderr, "%d bytes at %p in: %s:%d",
    149       (int)what->size, what, what->fname, what->lineno);
     148    if ((all & MM_PRINT_ALL_ADDR) || what->init == 0)
     149    {
     150      fprintf( stderr, "%d bytes at %p in: %s:%d",
     151               (int)what->size, what, what->fname, what->lineno);
    150152#ifdef MTRACK
    151     mmPrintStack(what->bt_stack);
     153      mmDBPrintStack(what, all);
    152154#else
    153     fprintf( stderr, "\n");
    154 #endif
     155      fprintf( stderr, "\n");
     156#endif
     157    }
    155158    what=what->next;
    156159  }
  • Singular/mmprivate.h

    r105efec r6e5833  
    44*  Computer Algebra System SINGULAR     *
    55****************************************/
    6 /* $Id: mmprivate.h,v 1.7 1999-03-19 16:00:07 Singular Exp $ */
     6/* $Id: mmprivate.h,v 1.8 1999-03-19 17:42:31 obachman Exp $ */
    77/*
    88* ABSTRACT
     
    3636  char * fname;
    3737  unsigned long bt_stack[BT_MAXSTACK];
     38  int init;
    3839  size_t size;
    3940  int lineno;
     
    8182void mmCheckPrint( void );
    8283
     84#define MM_PRINT_ALL_ADDR 1
     85#define MM_PRINT_ALL_STACK 2
     86
     87
    8388#endif /* MEMPRIVATE_H */
    8489
  • Singular/mod2.h.in

    r105efec r6e5833  
    333333#endif
    334334
    335 /* define MTRACK for allowing to keep track of Alloc/Free with a backtrace */
    336 /* #define MTRACK */
    337335
    338336
     
    350348/* define MLIST for printing block of used memory on exit */
    351349#define MLIST 1
     350/* define MTRACK for allowing to keep track of Alloc/Free with a backtrace */
     351/* #define MTRACK */
    352352
    353353/* #define PAGE_TEST */
  • Singular/scanner.l

    r105efec r6e5833  
    33*  Computer Algebra System SINGULAR     *
    44****************************************/
    5 /* $Id: scanner.l,v 1.14 1998-12-14 14:27:43 Singular Exp $ */
     5/* $Id: scanner.l,v 1.15 1999-03-19 17:42:33 obachman Exp $ */
    66#include <stdio.h>
    77#include <string.h>
     
    281281                           #ifdef MDEBUG
    282282                             #ifdef MLIST
    283                              mmTestList();
     283                             mmTestList(0);
    284284                             #endif
    285285                           #endif
  • Singular/tesths.cc

    r105efec r6e5833  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: tesths.cc,v 1.57 1998-10-30 17:13:32 Singular Exp $ */
     4/* $Id: tesths.cc,v 1.58 1999-03-19 17:42:33 obachman Exp $ */
    55
    66/*
     
    531531  }
    532532  errorreported = 0;
     533  mmMarkInitDBMCB();
    533534#ifndef macintosh
    534535#if defined(HAVE_READLINE)
Note: See TracChangeset for help on using the changeset viewer.