From 0ae452090da5bedefeaaea902fabe22c57213e49 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 13 Mar 2016 22:39:48 -0300 Subject: [PATCH] test --- deprecated/obsolete.h | 28 +++++++++++++++++++++++++++- iguana/iguana_bundles.c | 2 +- iguana/iguana_ramchain.c | 31 +++++-------------------------- iguana/iguana_unspents.c | 10 +++++----- 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/deprecated/obsolete.h b/deprecated/obsolete.h index 6353e9894..9ec3c2451 100755 --- a/deprecated/obsolete.h +++ b/deprecated/obsolete.h @@ -14149,5 +14149,31 @@ len = 0; } //struct scriptdata { uint32_t ind:31,spendflag:1; uint16_t hdrsi,scriptlen; }__attribute__((packed)); - + if ( ramchain->expanded != 0 ) + { + if ( (long)destoffset < (long)srcoffset ) + { + /*sprintf(fname,"sigs/%s/%s",coin->symbol,bits256_str(str,bp->hashes[0])); + if ( (fp= fopen(fname,"wb")) != 0 ) + { + if ( ramchain->H.stacksize > 0 ) + { + if ( fwrite(srcoffset,1,ramchain->H.stacksize,fp) != ramchain->H.stacksize ) + printf("error writing %d sigs to %s\n",ramchain->H.stacksize,fname); + } + else + { + if ( fwrite(&izero,1,sizeof(izero),fp) != sizeof(izero) ) + printf("error writing izero to %s\n",fname); + } + fclose(fp); + } + if ( (ramchain->sigsfileptr= OS_mapfile(fname,&ramchain->sigsfilesize,0)) == 0 ) + return(-1); + printf("%s bp.[%d] ht.%d stacksize.%u filesize.%u\n",fname,bp->hdrsi,bp->bundleheight,ramchain->H.stacksize,(uint32_t)ramchain->sigsfilesize);*/ + //for (i=0; iH.stacksize; i++) + // c = *srcoffset, *destoffset++ = c, *srcoffset++ = 0; + } else printf("smashed stack? dest.%ld vs src %ld offset.%u stacksize.%u space.%u\n",(long)destoffset,(long)srcoffset,(uint32_t)ramchain->H.scriptoffset,(uint32_t)ramchain->H.stacksize,(uint32_t)ramchain->H.scriptoffset); + } + #endif diff --git a/iguana/iguana_bundles.c b/iguana/iguana_bundles.c index 64d165a2e..adb37cf0b 100755 --- a/iguana/iguana_bundles.c +++ b/iguana/iguana_bundles.c @@ -512,7 +512,7 @@ void iguana_bundlestats(struct iguana_info *coin,char *str) if ( time(NULL) > lastdisp+10 ) { printf("%s\n",str); - //myallocated(0,0); + myallocated(0,0); lastdisp = (uint32_t)time(NULL); if ( firstgap != 0 && firstgap->queued == 0 ) iguana_bundleQ(coin,firstgap,1000); diff --git a/iguana/iguana_ramchain.c b/iguana/iguana_ramchain.c index 6ce532b49..8f9fcbfa1 100755 --- a/iguana/iguana_ramchain.c +++ b/iguana/iguana_ramchain.c @@ -1004,7 +1004,7 @@ int32_t iguana_ramchain_alloc(struct iguana_info *coin,struct iguana_ramchain *r memset(mem,0,sizeof(*mem)); memset(hashmem,0,sizeof(*hashmem)); hashsize = iguana_hashmemsize(numtxids,numunspents,numspends,numpkinds,numexternaltxids,scriptspace); - while ( 0 && (x= (myallocated(0,-1)+hashsize+allocsize)) > coin->MAXMEM ) + while ( 0 && (x= (myallocated(0,-1)+hashsize+allocsize + 65536)) > coin->MAXMEM ) { char str[65],str2[65]; fprintf(stderr,"ht.%d wait for allocated %s < MAXMEM %s | elapsed %.2f minutes hashsize.%ld allocsize.%ld\n",height,mbstr(str,myallocated(0,-1)+hashsize+allocsize),mbstr(str2,coin->MAXMEM),(double)(time(NULL)-coin->startutc)/60.,(long)hashsize,(long)allocsize); sleep(13); @@ -1364,7 +1364,6 @@ struct iguana_ramchain *iguana_ramchain_map(struct iguana_info *coin,char *fname bp->blocks[i]->RO = B[i];//coin->blocks.RO[bp->bundleheight + i]; coin->blocks.RO[bp->bundleheight+i] = B[i]; } - } //printf("mapped %s scriptspace %d:%d\n",fname,ramchain->H.scriptoffset,ramchain->H.data->scriptspace); return(ramchain); @@ -1948,7 +1947,7 @@ int32_t iguana_ramchain_expandedsave(struct iguana_info *coin,RAMCHAIN_FUNC,stru { static bits256 zero; bits256 firsthash2,lasthash2; int32_t err,bundlei,hdrsi,numblocks,firsti,height,retval= -1; - struct iguana_ramchain checkR,*mapchain; char fname[1024];//,str[65]; //FILE *fp; + struct iguana_ramchain checkR,*mapchain; char fname[1024]; uint32_t scriptspace,scriptoffset,stacksize; uint8_t *destoffset,*srcoffset; firsthash2 = ramchain->H.data->firsthash2, lasthash2 = ramchain->H.data->lasthash2; height = ramchain->height, firsti = ramchain->H.data->firsti, hdrsi = ramchain->H.hdrsi, numblocks = ramchain->numblocks; @@ -1956,29 +1955,8 @@ int32_t iguana_ramchain_expandedsave(struct iguana_info *coin,RAMCHAIN_FUNC,stru srcoffset = &Kspace[ramchain->H.data->scriptspace - ramchain->H.stacksize]; if ( ramchain->expanded != 0 ) { - if ( (long)destoffset < (long)srcoffset ) - { - /*sprintf(fname,"sigs/%s/%s",coin->symbol,bits256_str(str,bp->hashes[0])); - if ( (fp= fopen(fname,"wb")) != 0 ) - { - if ( ramchain->H.stacksize > 0 ) - { - if ( fwrite(srcoffset,1,ramchain->H.stacksize,fp) != ramchain->H.stacksize ) - printf("error writing %d sigs to %s\n",ramchain->H.stacksize,fname); - } - else - { - if ( fwrite(&izero,1,sizeof(izero),fp) != sizeof(izero) ) - printf("error writing izero to %s\n",fname); - } - fclose(fp); - } - if ( (ramchain->sigsfileptr= OS_mapfile(fname,&ramchain->sigsfilesize,0)) == 0 ) - return(-1); - printf("%s bp.[%d] ht.%d stacksize.%u filesize.%u\n",fname,bp->hdrsi,bp->bundleheight,ramchain->H.stacksize,(uint32_t)ramchain->sigsfilesize);*/ - //for (i=0; iH.stacksize; i++) - // c = *srcoffset, *destoffset++ = c, *srcoffset++ = 0; - } else printf("smashed stack? dest.%ld vs src %ld offset.%u stacksize.%u space.%u\n",(long)destoffset,(long)srcoffset,(uint32_t)ramchain->H.scriptoffset,(uint32_t)ramchain->H.stacksize,(uint32_t)ramchain->H.scriptoffset); + if ( (long)destoffset > (long)srcoffset ) + printf("smashed stack? dest.%ld vs src %ld offset.%u stacksize.%u space.%u\n",(long)destoffset,(long)srcoffset,(uint32_t)ramchain->H.scriptoffset,(uint32_t)ramchain->H.stacksize,(uint32_t)ramchain->H.scriptoffset); } printf("%d SAVE: Koffset.%d scriptoffset.%d stacksize.%d allocsize.%d gap.%ld RO.%d\n",bp->bundleheight,(int32_t)ramchain->H.data->Koffset,ramchain->H.scriptoffset,ramchain->H.stacksize,(int32_t)ramchain->H.data->allocsize,(long)destoffset - (long)srcoffset,ramchain->H.ROflag); scriptspace = ramchain->H.data->scriptspace; @@ -2230,6 +2208,7 @@ int32_t iguana_bundlesaveHT(struct iguana_info *coin,struct OS_memspace *mem,str block->fpipbits = 0; bp->issued[i] = 0; block->issued = 0; + iguana_bundlemapfree(mem,&HASHMEM,ipbits,ptrs,filesizes,num,R,bp->n); return(-1); } //destB[i] = block->RO; diff --git a/iguana/iguana_unspents.c b/iguana/iguana_unspents.c index 9a4afa529..ead1926ab 100755 --- a/iguana/iguana_unspents.c +++ b/iguana/iguana_unspents.c @@ -115,9 +115,6 @@ struct iguana_bundle *iguana_spent(struct iguana_info *coin,uint32_t *unspentind int32_t iguana_spentsinit(struct iguana_info *coin,struct iguana_bundleind *spents,struct iguana_bundle *bp,struct iguana_ramchain *ramchain) { - //struct iguana_Uextra { uint32_t spendind; uint16_t hdrsi; } __attribute__((packed)); // unspentind - //struct iguana_spend { uint32_t spendtxidind; int16_t prevout; uint16_t tbd:14,external:1,diffsequence:1; } __attribute__((packed)); - //struct iguana_unspent { uint64_t value; uint32_t txidind,pkind,prevunspentind; uint16_t hdrsi:12,type:4,vout; } __attribute__((packed)); int32_t spendind,n,max,hdrsi,errs,flag; uint32_t unspentind; struct iguana_bundle *spentbp; struct iguana_spend *S; S = (void *)(long)((long)ramchain->H.data + ramchain->H.data->Soffset); @@ -132,10 +129,13 @@ int32_t iguana_spentsinit(struct iguana_info *coin,struct iguana_bundleind *spen { spentbp->ramchain.spents[unspentind].ind = spendind; spentbp->ramchain.spents[unspentind].hdrsi = bp->hdrsi; - printf("%p bp.[%d] U%d <- S%d.[%d] [%p %p %p]\n",&spentbp->ramchain.spents[unspentind],hdrsi,unspentind,spendind,bp->hdrsi,coin->bundles[0],coin->bundles[1],coin->bundles[2]); flag = 1; - } else if ( S[spendind].prevout < 0 ) + if ( S[spendind].external == 0 && spentbp != bp ) + printf("unexpected spendbp: %p bp.[%d] U%d <- S%d.[%d] [%p %p %p]\n",&spentbp->ramchain.spents[unspentind],hdrsi,unspentind,spendind,bp->hdrsi,coin->bundles[0],coin->bundles[1],coin->bundles[2]); + } + else if ( S[spendind].prevout < 0 ) flag = 1; + else printf("unresolved spendind.%d hdrsi.%d\n",spendind,bp->hdrsi); if ( flag == 0 ) errs++; }