# HG changeset patch # User Nina Engelhardt # Date 1366036891 -7200 # Node ID 94911329b0678ec9d1e3513aaca95973d3ac4e5a # Parent 71a20aa9d17a0875b56ba15789086457b75f7bd2 fix access after free in reqHdlr diff -r 71a20aa9d17a -r 94911329b067 Measurement/VSs_Counter_Recording.c --- a/Measurement/VSs_Counter_Recording.c Wed Mar 06 15:56:09 2013 +0100 +++ b/Measurement/VSs_Counter_Recording.c Mon Apr 15 16:41:31 2013 +0200 @@ -13,7 +13,7 @@ VSsSemEnv *semanticEnv = _VMSMasterEnv->semanticEnv; int i; for(i=0;icounterList[i] = makeListOfArrays(sizeof(CounterEvent), 128); + semanticEnv->counterList[i] = makeListOfArrays(sizeof(CounterEvent), 524288); } } diff -r 71a20aa9d17a -r 94911329b067 VSs_PluginFns.c --- a/VSs_PluginFns.c Wed Mar 06 15:56:09 2013 +0100 +++ b/VSs_PluginFns.c Mon Apr 15 16:41:31 2013 +0200 @@ -225,7 +225,7 @@ case createReq: handleCreate(req, requestingSlv, semEnv); break; case dissipate: handleDissipate(requestingSlv, semEnv); - break; + return; //don't take out another req from free'd VP case VMSSemantic: VMS_PI__handle_VMSSemReq(req, requestingSlv, semEnv, (ResumeSlvFnPtr) & resume_slaveVP); break; diff -r 71a20aa9d17a -r 94911329b067 VSs_Request_Handlers.c --- a/VSs_Request_Handlers.c Wed Mar 06 15:56:09 2013 +0100 +++ b/VSs_Request_Handlers.c Mon Apr 15 16:41:31 2013 +0200 @@ -83,10 +83,12 @@ void free_pointer_entry(void* _ptrEntry) { VSsPointerEntry* ptrEntry = (VSsPointerEntry*)_ptrEntry; +#ifdef DEBUG_PRIVATE_Q int entriesStillInQ = ptrEntry->waitersQ->numWrites - ptrEntry->waitersQ->numReads; if (entriesStillInQ) { DEBUG__printf(dbgRqstHdlr, "Deleting Queue with %d entries still remaining", entriesStillInQ); } +#endif freePrivQ(ptrEntry->waitersQ); VMS_int__free(ptrEntry); }