Program: 15675
Project: 15675
Buggy source:
private void testMVStore(){
  FilePathReorderWrites fs=FilePathReorderWrites.register();
  String fileName="String_Node_Str";
  try {
    for (int i=0; i < 1000; i++) {
      log(i + "String_Node_Str");
      fs.setPowerOffCountdown(0,0);
      FileUtils.delete("String_Node_Str");
      FileUtils.delete("String_Node_Str");
      MVStore store=new MVStore.Builder().fileName(fileName).autoCommitDisabled().open();
      Map<Integer,byte[]> map=store.openMap("String_Node_Str");
      map.put(-1,new byte[1]);
      store.commit();
      store.getFileStore().sync();
      Random r=new Random(i);
      int stop=4 + r.nextInt(20);
      log("String_Node_Str");
      fs.setPowerOffCountdown(stop,i);
      try {
        for (int j=1; j < 100; j++) {
          Map<Integer,Integer> newMap=store.openMap("String_Node_Str" + j);
          newMap.put(j,j * 10);
          int key=r.nextInt(10);
          int len=10 * r.nextInt(1000);
          if (r.nextBoolean()) {
            map.remove(key);
          }
 else {
            map.put(key,new byte[len]);
          }
          log("String_Node_Str" + j + "String_Node_Str");
          store.commit();
switch (r.nextInt(10)) {
case 0:
            log("String_Node_Str");
          store.compact(100,10 * 1024);
        break;
case 1:
      log("String_Node_Str");
    store.compactMoveChunks();
  log("String_Node_Str");
break;
}
}
fail();
}
 catch (IllegalStateException e) {
log("String_Node_Str" + e);
}
try {
store.close();
}
 catch (IllegalStateException e) {
store.closeImmediately();
}
log("String_Node_Str");
fs.setPowerOffCountdown(100,0);
if (LOG) {
MVStoreTool.dump(fileName,true);
}
store=new MVStore.Builder().fileName(fileName).autoCommitDisabled().open();
map=store.openMap("String_Node_Str");
if (!map.containsKey(-1)) {
fail("String_Node_Str" + map.size() + "String_Node_Str"+ i);
}
 else {
assertEquals("String_Node_Str" + i,1,map.get(-1).length);
}
for (int j=0; j < 100; j++) {
Map<Integer,Integer> newMap=store.openMap("String_Node_Str" + j);
newMap.get(j);
}
map.keySet();
store.close();
}
}
  finally {
FileUtils.delete("String_Node_Str");
FileUtils.delete("String_Node_Str");
}
}

Fixed version (ground truth):
private void testMVStore(){
  FilePathReorderWrites fs=FilePathReorderWrites.register();
  String fileName="String_Node_Str";
  try {
    for (int i=0; i < 1000; i++) {
      log(i + "String_Node_Str");
      fs.setPowerOffCountdown(0,0);
      FileUtils.delete("String_Node_Str");
      FileUtils.delete("String_Node_Str");
      MVStore store=new MVStore.Builder().fileName(fileName).autoCommitDisabled().open();
      Map<Integer,byte[]> map=store.openMap("String_Node_Str");
      map.put(-1,new byte[1]);
      store.commit();
      store.getFileStore().sync();
      Random r=new Random(i);
      int stop=4 + r.nextInt(20);
      log("String_Node_Str");
      fs.setPowerOffCountdown(stop,i);
      try {
        for (int j=1; j < 100; j++) {
          Map<Integer,Integer> newMap=store.openMap("String_Node_Str" + j);
          newMap.put(j,j * 10);
          int key=r.nextInt(10);
          int len=10 * r.nextInt(1000);
          if (r.nextBoolean()) {
            map.remove(key);
          }
 else {
            map.put(key,new byte[len]);
          }
          log("String_Node_Str" + j + "String_Node_Str");
          store.commit();
switch (r.nextInt(10)) {
case 0:
            log("String_Node_Str");
          store.compact(100,10 * 1024);
        break;
case 1:
      log("String_Node_Str");
    store.compactMoveChunks();
  log("String_Node_Str");
break;
}
}
fail();
}
 catch (IllegalStateException e) {
log("String_Node_Str" + e + "String_Node_Str"+ e.getCause());
}
try {
store.close();
}
 catch (IllegalStateException e) {
store.closeImmediately();
}
log("String_Node_Str");
fs.setPowerOffCountdown(100,0);
if (LOG) {
MVStoreTool.dump(fileName,true);
}
store=new MVStore.Builder().fileName(fileName).autoCommitDisabled().open();
map=store.openMap("String_Node_Str");
if (!map.containsKey(-1)) {
fail("String_Node_Str" + map.size() + "String_Node_Str"+ i);
}
 else {
assertEquals("String_Node_Str" + i,1,map.get(-1).length);
}
for (int j=0; j < 100; j++) {
Map<Integer,Integer> newMap=store.openMap("String_Node_Str" + j);
newMap.get(j);
}
map.keySet();
store.close();
}
}
  finally {
FileUtils.delete("String_Node_Str");
FileUtils.delete("String_Node_Str");
}
}