title: Why does the setjmp/longjmp crash on MSVC when it didn't in MinGW?
body: <p>I wanna use  <code>setjmp()</code>/<code>longjmp()</code> to implement a coroutine system. 
  Then I decide to code a little .c file to test it. In MinGW, it's OK; I got the result I want.
  But when I compile it in MSVC++, the program crashes: "access violation"</p>
  
  <pre><code>    #include &lt;stdio.h&gt;
      #include &lt;stdlib.h&gt;
      #include &lt;setjmp.h&gt;
  
      jmp_buf a;
      int is_invoke=0;
  
      void 
      action_1()
      {
          for ( ;; ) {
            printf("hello~~~A\n");
            if(!setjmp(a)) {
              is_invoke=1;
              return;
            }  
          }
      }
  
      void 
      func()
      {
        if (is_invoke) {
          longjmp(a,1);
        }
        action_1();
        printf("end\n");
      }
  
      void 
      dummy()
      {
        ;
      }
  
      int 
      main(int argc, char *argv[])
      {
          for ( ;; )  {
            func();
            dummy();
          }
          return 0;
      }
  </code></pre>