fix bug...this is another evil one...
authorBrian Demsky <bdemsky@uci.edu>
Wed, 30 May 2012 07:18:44 +0000 (00:18 -0700)
committerBrian Norris <banorris@uci.edu>
Wed, 30 May 2012 15:10:11 +0000 (08:10 -0700)
snapshot.cc

index 7cea7d6191ca457b5c7b98cd1e45dc2c15596e22..e8fdadba28839df18728b42ab7194c46ec01989c 100644 (file)
@@ -141,6 +141,15 @@ void initSnapShotLibrary(unsigned int numbackingpages,
        }
        initSnapShotRecord(numbackingpages, numsnapshots, nummemoryregions);
 
+       // EVIL HACK: We need to make sure that calls into the HandlePF method don't cause dynamic links
+       // The problem is that we end up protecting state in the dynamic linker...
+       // Solution is to call our signal handler before we start protecting stuff...
+
+       siginfo_t si;
+       si.si_addr=ss.ss_sp;
+       HandlePF(SIGSEGV, &si, NULL);
+       snapshotrecord->lastBackingPage--; //remove the fake page we copied
+
        basemySpace=MYMALLOC((numheappages+1)*PAGESIZE);
        void * pagealignedbase=PageAlignAddressUpward(basemySpace);
        mySpace = create_mspace_with_base(pagealignedbase,  numheappages*PAGESIZE, 1 );