From: adash Date: Tue, 9 Feb 2010 01:35:38 +0000 (+0000) Subject: missing checkin X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9af09305b52c71d5044a9b3550cbcfbe5c549874;p=IRC.git missing checkin --- diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index 1724ea38..e7b6291b 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -2862,6 +2862,9 @@ public class BuildCode { if (state.SINGLETM&&state.SANDBOX&&(locality.getAtomic(lb).get(fn).intValue()>0)) { output.println("if (unlikely((--transaction_check_counter)<=0)) checkObjects();"); } + if(state.DSM&&state.SANDBOX&&(locality.getAtomic(lb).get(fn).intValue()>0)) { + output.println("if (unlikely((--transaction_check_counter)<=0)) checkObjects();"); + } if (((state.THREAD||state.DSM||state.SINGLETM)&&GENERATEPRECISEGC) || (this.state.MULTICOREGC)) { if(state.DSM&&locality.getAtomic(lb).get(fn).intValue()>0) { diff --git a/Robust/src/Runtime/DSTM/interface/sandbox.c b/Robust/src/Runtime/DSTM/interface/sandbox.c index f1c0c7d7..e42ca4ac 100644 --- a/Robust/src/Runtime/DSTM/interface/sandbox.c +++ b/Robust/src/Runtime/DSTM/interface/sandbox.c @@ -22,9 +22,16 @@ void errorhandler(int sig, struct sigcontext ctx) { t_chashDelete(); _longjmp(aborttrans, 1); } + printf("Error in System at %s, %s(), %d\n", __FILE__, __func__, __LINE__); + print_trace(); threadhandler(sig, ctx); } + +/* + * returns 0 when read set objects are consistent + * returns 1 when objects are inconsistent + */ int checktrans() { /* Create info to keep track of numelements */ unsigned int size = c_size; @@ -45,7 +52,7 @@ int checktrans() { machinenum = myIpAddr; } else if ((machinenum = lhashSearch(curr->key)) == 0) { printf("Error: No such machine %s, %d\n", __func__, __LINE__); - return 0; + return 1; } if(machinenum != myIpAddr) head = createList(head, headeraddr, machinenum, c_numelements); @@ -58,21 +65,19 @@ int checktrans() { retval = verify(head); } - if(retval == 1) { - printf("Error in System at %s, %s(), %d\n", __FILE__, __func__, __LINE__); - print_trace(); + if(retval == 1) { //consistent objects /* free head */ deletehead(head); - exit(-1); + return 0; } if(retval == 0) { /* free head */ deletehead(head); - return 1; + return 1; //return 1 when objects are inconsistent } - return 0; // return when objects inconsistent + return 0; } nodeElem_t * createList(nodeElem_t *head, objheader_t *headeraddr, unsigned int mid, @@ -171,6 +176,9 @@ void deletehead(nodeElem_t *head) { return; } + +/* returns 0 => Inconsistent Objects found, abort transaction */ +/* returns 1 => consistent objects found, error in system */ /* Process the linked list of objects */ int verify(nodeElem_t *pile) { /* create and initialize an array of sockets and reply receiving buffer */