freeTwice Trace summary:

Step 1: State 0 -- freeTwice.c line 4 [main@0->main@1] "p = (double*)malloc(sizeof(double));" -> State 1
Step 2: State 1 -- freeTwice.c line 5 [main@1->main@2] "free(p);" -> State 2
Step 3: State 2 -- freeTwice.c line 6 [main@2->main@3] "free(p);"

freeTwice Trace details:

begin State 0
  onStack = true;
  seen = true;
  pathCondition : true
  begin model state
    begin shared variables
    end shared variables;
    begin process 0
      begin stack frame 0
        function : main;
        location : 0;
        p = undefined (Ref[real]);
      end stack frame 0;
    end process 0;
  end model state
end State 0

Step 1: State 0 -- freeTwice.c line 4 [main@0->main@1] "p = (double*)malloc(sizeof(double));" -> State 1

begin State 1
  onStack = true;
  seen = true;
  pathCondition : true
  begin model state
    begin shared variables
    end shared variables;
    begin process 0
      begin heap variables
        __heap_0_0 = m0p0h0 (real[1]);
      end heap variables;
      begin stack frame 0
        function : main;
        location : 1;
        p = &__heap_0_0[0] (Ref[real]);
      end stack frame 0;
    end process 0;
  end model state
end State 1

Step 2: State 1 -- freeTwice.c line 5 [main@1->main@2] "free(p);" -> State 2

begin State 2
  onStack = true;
  seen = true;
  pathCondition : true
  begin model state
    begin shared variables
    end shared variables;
    begin process 0
      begin stack frame 0
        function : main;
        location : 2;
        p = undefined (Ref[real]);
      end stack frame 0;
    end process 0;
  end model state
end State 2

Step 3: State 2 -- freeTwice.c line 6 [main@2->main@3] "free(p);"
