From: sparky4 Date: Wed, 22 Jul 2015 12:23:18 +0000 (-0500) Subject: major instability issues with memory manager! X-Git-Url: http://4ch.mooo.com/gitweb/?a=commitdiff_plain;h=e188083f22cb003c96951138d8d83fffdb5d8fbf;p=16.git major instability issues with memory manager! modified: DEBUG.TXT modified: MMDUMP.TXT modified: awoo.sh modified: exmmtest.exe modified: src/exmmtest.c modified: src/lib/16_mm.c --- diff --git a/DEBUG.TXT b/DEBUG.TXT index ead23ca7..74c756b6 100644 --- a/DEBUG.TXT +++ b/DEBUG.TXT @@ -1,4 +1,3 @@ -Seg:0 Size:88400 Owner:0x0 -Seg:1595 Size:4096 Owner:0x420 -Seg:1a3a Size:810080 Owner:0x0 -Seg:e000 Size:-917520 Owner:0x0 +Seg:ffff Size:917520 Owner:0x0 + +MM_ShowMemory: Memory block order currupted! diff --git a/MMDUMP.TXT b/MMDUMP.TXT index 6d15b6f7..e69de29b 100644 Binary files a/MMDUMP.TXT and b/MMDUMP.TXT differ diff --git a/awoo.sh b/awoo.sh index 8a4cebd9..5ef0ca15 100644 --- a/awoo.sh +++ b/awoo.sh @@ -1,4 +1,4 @@ #!/bin/bash git add . bash ./boop.sh -cp mmtest.exe /var/www/html/ +cp exmmtest.exe /var/www/html/ diff --git a/exmmtest.exe b/exmmtest.exe index bcec52f8..eed1cb67 100644 Binary files a/exmmtest.exe and b/exmmtest.exe differ diff --git a/src/exmmtest.c b/src/exmmtest.c index 690851f0..e2f8d5de 100644 --- a/src/exmmtest.c +++ b/src/exmmtest.c @@ -29,18 +29,24 @@ #include "src/lib/16_ca.h" #include "src/lib/16_mm.h" //#include "src/lib/modex16.h" +#pragma hdrstop + +#pragma warn -pro +#pragma warn -use -//#define FILERL +#define FILERL //#define FILEINIT void main(int argc, char *argv[]) { - static mminfo_t mm; mminfotype mmi; - static const __segment segu; - static memptr bigbuffer; + mminfo_t mm; mminfotype mmi; + __segment segu; +#ifdef FILERL + memptr bigbuffer; static char *bakapee; word baka; +#endif //static page_t screen; //mmi.segu=FP_SEG(segu); @@ -49,12 +55,16 @@ main(int argc, char *argv[]) printf("&segu=%p\n", (segu)); //printf("mmi.segu=%p\n", (mmi.segu)); - bakapee = _nmalloc(64); +#ifdef FILERL + bakapee = malloc(64); // memset(bakapee, 0, 64); +#endif mm.mmstarted=0; +#ifdef FILERL if(argv[1]) bakapee = argv[1]; else bakapee = "data/koishi~~.pcx"; +#endif textInit(); @@ -89,9 +99,9 @@ main(int argc, char *argv[]) baka=1; else baka=0; -#endif //hmm functions in cache system use the buffered stuff printf("size of big buffer~=%lu\n", _bmsize(segu, bigbuffer)); +#endif printf("dark purple = purgable\n"); printf("medium blue = non purgable\n"); printf("red = locked\n"); diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index b1a56ad4..548efc09 100644 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -647,7 +647,7 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) // // set up the linked list (everything in the free list; // - //printf(" linked list making!\n"); + printf(" linked list making!\n"); mm->mmhead = NULL; mm->mmfree = &(mm->mmblocks[0]); for(i=0;immhead = mm->mmnew; // this will allways be the first node mm->mmnew->start = 0; @@ -673,11 +673,11 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) // // get all available near conventional memory segments // - //printf(" nearheap making!\n"); + printf(" nearheap making!\n"); //---- length=coreleft(); - //_nheapgrow(); - length=_memmax(); - start = (void huge *)(mm->nearheap = _nmalloc(length)); + _nheapgrow(); + length=GetFreeSize();//_memmax(); + start = /*(void huge *)*/(mm->nearheap = _nmalloc(length)); length -= 16-(FP_OFF(start)&15); length -= SAVENEARHEAP; seglength = length / 16; // now in paragraphs @@ -698,23 +698,23 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) printf( "ERROR - bad node in nearheap\n" ); break; }*/ - //printf(" near heap ok!\n"); + printf(" near heap ok!\n"); // // get all available far conventional memory segments // //---- length=farcoreleft(); - //printf(" farheap making!\n"); - /*_fheapgrow(); - length=0xff;//UL*4UL;//_memavl(); + printf(" farheap making!\n"); + _fheapgrow(); + length=_memavl();//0xffffUL*4UL; start = mm->farheap = halloc(length, sizeof(byte)); //start = mm->farheap = _fmalloc(length); length -= 16-(FP_OFF(start)&15); length -= SAVEFARHEAP; seglength = length / 16; // now in paragraphs segstart = FP_SEG(start)+(FP_OFF(start)+15)/16; - MML_UseSpace(segstart,seglength, mm);*/ - mmi->farheap = 0;//length; + MML_UseSpace(segstart,seglength, mm); + mmi->farheap = length; mmi->mainmem = mmi->nearheap + mmi->farheap; /*switch( _fheapchk() ) { case _HEAPOK: @@ -730,12 +730,12 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) printf( "ERROR - bad node in farheap\n" ); break; }*/ - //printf(" far heap ok!\n"); + printf(" far heap ok!\n"); // // detect EMS and allocate up to 64K at page frame // -printf(" EMS1\n"); +/*printf(" EMS1\n"); printf("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); //bug! mmi->EMSmem = 0; for(i = 1;i < __argc;i++) @@ -782,11 +782,11 @@ printf(" XMS!\n"); // // allocate the misc buffer // -xmsskip: +xmsskip:*/ /*mmi->nearheap = 0; -mmi->farheap = 0; +mmi->farheap = 0;*/ mmi->EMSmem = 0; -mmi->XMSmem = 0;*/ +mmi->XMSmem = 0; mm->mmrover = mm->mmhead; // start looking for space after low block MM_GetPtr(&(mm->bufferseg),BUFFERSIZE, mm, mmi);